2016-05-25 H.J. Lu <hongjiu.lu@intel.com>
+ PR gas/20140
+ * config/tc-i386.c (cpu_flags_match): Require another match
+ for AVX512VL.
+ * testsuite/gas/i386/i386.exp: Run avx512vl-1, avx512vl-2,
+ x86-64-avx512vl-1 and x86-64-avx512vl-2.
+ * testsuite/gas/i386/avx512vl-1.l: New file.
+ * testsuite/gas/i386/avx512vl-1.s: Likewise.
+ * testsuite/gas/i386/avx512vl-2.l: Likewise.
+ * testsuite/gas/i386/avx512vl-2.s: Likewise.
+ * testsuite/gas/i386/x86-64-avx512vl-1.l: Likewise.
+ * testsuite/gas/i386/x86-64-avx512vl-1.s: Likewise.
+ * testsuite/gas/i386/x86-64-avx512vl-2.l: Likewise.
+ * testsuite/gas/i386/x86-64-avx512vl-2.s: Likewise.
+
+2016-05-25 H.J. Lu <hongjiu.lu@intel.com>
+
PR gas/20141
* testsuite/gas/i386/i386.exp: Run x86-64-pr20141.
* testsuite/gas/i386/x86-64-pr20141.d: New file.
else
match |= CPU_FLAGS_ARCH_MATCH;
}
+ else if (x.bitfield.cpuavx512vl)
+ {
+ /* Match AVX512VL. */
+ if (cpu.bitfield.cpuavx512vl)
+ {
+ /* Need another match. */
+ cpu.bitfield.cpuavx512vl = 0;
+ if (!cpu_flags_all_zero (&cpu))
+ match |= CPU_FLAGS_32BIT_MATCH;
+ else
+ match |= CPU_FLAGS_ARCH_MATCH;
+ }
+ else
+ match |= CPU_FLAGS_ARCH_MATCH;
+ }
else
match |= CPU_FLAGS_32BIT_MATCH;
}
--- /dev/null
+.*: Assembler messages:
+.*:7: Error: .*bad register name.*
+.*:8: Error: .*corei7\.avx.*
+.*:9: Error: .*corei7\.avx.*
+.*:10: Error: .*corei7\.avx.*
+.*:15: Error: .*unsupported.*
+.*:16: Error: .*unsupported.*
+GAS LISTING .*
+#...
+[ ]*1[ ]+\.text
+[ ]*2[ ]+\.arch corei7
+[ ]*3[ ]+_start:
+[ ]*4[ ]+\.arch \.avx
+[ ]*5[ ]+\?\?\?\? C5F9E711 vmovntdq %xmm2, \(%ecx\)
+[ ]*6[ ]+\?\?\?\? C5FDE711 vmovntdq %ymm2, \(%ecx\)
+[ ]*7[ ]+vmovntdq %zmm2, \(%ecx\)
+[ ]*8[ ]+vpternlogq \$0xab, %xmm6, %xmm2, %xmm0
+[ ]*9[ ]+vpternlogq \$0xab, %ymm6, %ymm2, %ymm0
+[ ]*10[ ]+vpternlogq \$0xab, %zmm6, %zmm2, %zmm0
+[ ]*11[ ]+\.arch \.avx512f
+[ ]*12[ ]+\?\?\?\? C5F9E701 vmovntdq %xmm0, \(%ecx\)
+[ ]*13[ ]+\?\?\?\? C5FDE701 vmovntdq %ymm0, \(%ecx\)
+[ ]*14[ ]+\?\?\?\? 62F17D48 vmovntdq %zmm0, \(%ecx\)
+[ ]*14[ ]+E701
+[ ]*15[ ]+vpternlogq \$0xab, %xmm6, %xmm2, %xmm0
+[ ]*16[ ]+vpternlogq \$0xab, %ymm6, %ymm2, %ymm0
+[ ]*17[ ]+\?\?\?\? 62F3ED48 vpternlogq \$0xab, %zmm6, %zmm2, %zmm0
+[ ]*17[ ]+25C6AB
+[ ]*18[ ]+\.arch \.avx512vl
+[ ]*19[ ]+\?\?\?\? C5F9E701 vmovntdq %xmm0, \(%ecx\)
+[ ]*20[ ]+\?\?\?\? C5FDE701 vmovntdq %ymm0, \(%ecx\)
+[ ]*21[ ]+\?\?\?\? 62F17D48 vmovntdq %zmm0, \(%ecx\)
+[ ]*21[ ]+E701
+[ ]*22[ ]+\?\?\?\? 62F3ED08 vpternlogq \$0xab, %xmm6, %xmm2, %xmm0
+[ ]*22[ ]+25C6AB
+[ ]*23[ ]+\?\?\?\? 62F3ED28 vpternlogq \$0xab, %ymm6, %ymm2, %ymm0
+[ ]*23[ ]+25C6AB
+[ ]*24[ ]+\?\?\?\? 62F3ED48 vpternlogq \$0xab, %zmm6, %zmm2, %zmm0
+[ ]*24[ ]+25C6AB
--- /dev/null
+ .text
+ .arch corei7
+_start:
+ .arch .avx
+ vmovntdq %xmm2, (%ecx)
+ vmovntdq %ymm2, (%ecx)
+ vmovntdq %zmm2, (%ecx)
+ vpternlogq $0xab, %xmm6, %xmm2, %xmm0
+ vpternlogq $0xab, %ymm6, %ymm2, %ymm0
+ vpternlogq $0xab, %zmm6, %zmm2, %zmm0
+ .arch .avx512f
+ vmovntdq %xmm0, (%ecx)
+ vmovntdq %ymm0, (%ecx)
+ vmovntdq %zmm0, (%ecx)
+ vpternlogq $0xab, %xmm6, %xmm2, %xmm0
+ vpternlogq $0xab, %ymm6, %ymm2, %ymm0
+ vpternlogq $0xab, %zmm6, %zmm2, %zmm0
+ .arch .avx512vl
+ vmovntdq %xmm0, (%ecx)
+ vmovntdq %ymm0, (%ecx)
+ vmovntdq %zmm0, (%ecx)
+ vpternlogq $0xab, %xmm6, %xmm2, %xmm0
+ vpternlogq $0xab, %ymm6, %ymm2, %ymm0
+ vpternlogq $0xab, %zmm6, %zmm2, %zmm0
--- /dev/null
+.*: Assembler messages:
+.*:5: Error: .*corei7.*
+.*:6: Error: .*corei7.*
+.*:7: Error: .*corei7.*
+.*:9: Error: .*corei7\.avx\.avx512vl.*
+.*:10: Error: .*corei7\.avx\.avx512vl.*
+.*:11: Error: .*corei7\.avx\.avx512vl.*
+GAS LISTING .*
+#...
+[ ]*1[ ]+\.text
+[ ]*2[ ]+\.arch corei7
+[ ]*3[ ]+_start:
+[ ]*4[ ]+\.arch \.avx
+[ ]*5[ ]+vpconflictd %xmm0, %xmm5
+[ ]*6[ ]+vpconflictd %ymm0, %ymm5
+[ ]*7[ ]+vpconflictd %ymm0, %zmm5
+[ ]*8[ ]+\.arch \.avx512vl
+[ ]*9[ ]+vpconflictd %xmm0, %xmm5
+[ ]*10[ ]+vpconflictd %ymm0, %ymm5
+[ ]*11[ ]+vpconflictd %zmm0, %zmm5
+[ ]*12[ ]+\.arch \.avx512cd
+[ ]*13[ ]+\?\?\?\? 62F27D08 vpconflictd %xmm0, %xmm5
+[ ]*13[ ]+C4E8
+[ ]*14[ ]+\?\?\?\? 62F27D28 vpconflictd %ymm0, %ymm5
+[ ]*14[ ]+C4E8
+[ ]*15[ ]+\?\?\?\? 62F27D48 vpconflictd %zmm0, %zmm5
+[ ]*15[ ]+C4E8
--- /dev/null
+ .text
+ .arch corei7
+_start:
+ .arch .avx
+ vpconflictd %xmm0, %xmm5
+ vpconflictd %ymm0, %ymm5
+ vpconflictd %ymm0, %zmm5
+ .arch .avx512vl
+ vpconflictd %xmm0, %xmm5
+ vpconflictd %ymm0, %ymm5
+ vpconflictd %zmm0, %zmm5
+ .arch .avx512cd
+ vpconflictd %xmm0, %xmm5
+ vpconflictd %ymm0, %ymm5
+ vpconflictd %zmm0, %zmm5
run_dump_test "ospke"
run_dump_test "rdpid"
run_dump_test "rdpid-intel"
+ run_list_test "avx512vl-1" "-al"
+ run_list_test "avx512vl-2" "-al"
# These tests require support for 8 and 16 bit relocs,
# so we only run them for ELF and COFF targets.
run_dump_test "x86-64-fence-as-lock-add-yes"
run_dump_test "x86-64-fence-as-lock-add-no"
run_dump_test "x86-64-pr20141"
+ run_list_test "x86-64-avx512vl-1" "-al"
+ run_list_test "x86-64-avx512vl-2" "-al"
if { ![istarget "*-*-aix*"]
&& ![istarget "*-*-beos*"]
--- /dev/null
+.*: Assembler messages:
+.*:7: Error: .*bad register name.*
+.*:8: Error: .*corei7\.avx.*
+.*:9: Error: .*corei7\.avx.*
+.*:10: Error: .*corei7\.avx.*
+.*:15: Error: .*unsupported.*
+.*:16: Error: .*unsupported.*
+GAS LISTING .*
+#...
+[ ]*1[ ]+\.text
+[ ]*2[ ]+\.arch corei7
+[ ]*3[ ]+_start:
+[ ]*4[ ]+\.arch \.avx
+[ ]*5[ ]+\?\?\?\? C5F9E711 vmovntdq %xmm2, \(%rcx\)
+[ ]*6[ ]+\?\?\?\? C5FDE711 vmovntdq %ymm2, \(%rcx\)
+[ ]*7[ ]+vmovntdq %zmm2, \(%rcx\)
+[ ]*8[ ]+vpternlogq \$0xab, %xmm16, %xmm2, %xmm0
+[ ]*9[ ]+vpternlogq \$0xab, %ymm16, %ymm2, %ymm0
+[ ]*10[ ]+vpternlogq \$0xab, %zmm16, %zmm2, %zmm0
+[ ]*11[ ]+\.arch \.avx512f
+[ ]*12[ ]+\?\?\?\? C5F9E701 vmovntdq %xmm0, \(%rcx\)
+[ ]*13[ ]+\?\?\?\? C5FDE701 vmovntdq %ymm0, \(%rcx\)
+[ ]*14[ ]+\?\?\?\? 62F17D48 vmovntdq %zmm0, \(%rcx\)
+[ ]*14[ ]+E701
+[ ]*15[ ]+vpternlogq \$0xab, %xmm16, %xmm2, %xmm0
+[ ]*16[ ]+vpternlogq \$0xab, %ymm16, %ymm2, %ymm0
+[ ]*17[ ]+\?\?\?\? 62B3ED48 vpternlogq \$0xab, %zmm16, %zmm2, %zmm0
+[ ]*17[ ]+25C0AB
+[ ]*18[ ]+\.arch \.avx512vl
+[ ]*19[ ]+\?\?\?\? C5F9E701 vmovntdq %xmm0, \(%rcx\)
+[ ]*20[ ]+\?\?\?\? C5FDE701 vmovntdq %ymm0, \(%rcx\)
+[ ]*21[ ]+\?\?\?\? 62F17D48 vmovntdq %zmm0, \(%rcx\)
+[ ]*21[ ]+E701
+[ ]*22[ ]+\?\?\?\? 62B3ED08 vpternlogq \$0xab, %xmm16, %xmm2, %xmm0
+[ ]*22[ ]+25C0AB
+[ ]*23[ ]+\?\?\?\? 62B3ED28 vpternlogq \$0xab, %ymm16, %ymm2, %ymm0
+[ ]*23[ ]+25C0AB
+[ ]*24[ ]+\?\?\?\? 62B3ED48 vpternlogq \$0xab, %zmm16, %zmm2, %zmm0
+[ ]*24[ ]+25C0AB
--- /dev/null
+ .text
+ .arch corei7
+_start:
+ .arch .avx
+ vmovntdq %xmm2, (%rcx)
+ vmovntdq %ymm2, (%rcx)
+ vmovntdq %zmm2, (%rcx)
+ vpternlogq $0xab, %xmm16, %xmm2, %xmm0
+ vpternlogq $0xab, %ymm16, %ymm2, %ymm0
+ vpternlogq $0xab, %zmm16, %zmm2, %zmm0
+ .arch .avx512f
+ vmovntdq %xmm0, (%rcx)
+ vmovntdq %ymm0, (%rcx)
+ vmovntdq %zmm0, (%rcx)
+ vpternlogq $0xab, %xmm16, %xmm2, %xmm0
+ vpternlogq $0xab, %ymm16, %ymm2, %ymm0
+ vpternlogq $0xab, %zmm16, %zmm2, %zmm0
+ .arch .avx512vl
+ vmovntdq %xmm0, (%rcx)
+ vmovntdq %ymm0, (%rcx)
+ vmovntdq %zmm0, (%rcx)
+ vpternlogq $0xab, %xmm16, %xmm2, %xmm0
+ vpternlogq $0xab, %ymm16, %ymm2, %ymm0
+ vpternlogq $0xab, %zmm16, %zmm2, %zmm0
--- /dev/null
+.*: Assembler messages:
+.*:5: Error: .*corei7.*
+.*:6: Error: .*corei7.*
+.*:7: Error: .*corei7.*
+.*:9: Error: .*corei7\.avx\.avx512vl.*
+.*:10: Error: .*corei7\.avx\.avx512vl.*
+.*:11: Error: .*corei7\.avx\.avx512vl.*
+GAS LISTING .*
+#...
+[ ]*1[ ]+\.text
+[ ]*2[ ]+\.arch corei7
+[ ]*3[ ]+_start:
+[ ]*4[ ]+\.arch \.avx
+[ ]*5[ ]+vpconflictd %xmm0, %xmm25
+[ ]*6[ ]+vpconflictd %ymm0, %ymm25
+[ ]*7[ ]+vpconflictd %ymm0, %zmm25
+[ ]*8[ ]+\.arch \.avx512vl
+[ ]*9[ ]+vpconflictd %xmm0, %xmm25
+[ ]*10[ ]+vpconflictd %ymm0, %ymm25
+[ ]*11[ ]+vpconflictd %zmm0, %zmm25
+[ ]*12[ ]+\.arch \.avx512cd
+[ ]*13[ ]+\?\?\?\? 62627D08 vpconflictd %xmm0, %xmm25
+[ ]*13[ ]+C4C8
+[ ]*14[ ]+\?\?\?\? 62627D28 vpconflictd %ymm0, %ymm25
+[ ]*14[ ]+C4C8
+[ ]*15[ ]+\?\?\?\? 62627D48 vpconflictd %zmm0, %zmm25
+[ ]*15[ ]+C4C8
--- /dev/null
+ .text
+ .arch corei7
+_start:
+ .arch .avx
+ vpconflictd %xmm0, %xmm25
+ vpconflictd %ymm0, %ymm25
+ vpconflictd %ymm0, %zmm25
+ .arch .avx512vl
+ vpconflictd %xmm0, %xmm25
+ vpconflictd %ymm0, %ymm25
+ vpconflictd %zmm0, %zmm25
+ .arch .avx512cd
+ vpconflictd %xmm0, %xmm25
+ vpconflictd %ymm0, %ymm25
+ vpconflictd %zmm0, %zmm25