Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

[ARM] LLVM allows {LD,ST}REX{B,H,D} on Thumb1 targets #30693

Open Quuxplusone opened 7 years ago

Quuxplusone commented 7 years ago
Bugzilla Link PR31720
Status NEW
Importance P normal
Reported by Renato Golin (rengolin@gmail.com)
Reported on 2017-01-23 10:14:29 -0800
Last modified on 2017-01-27 00:47:27 -0800
Version trunk
Hardware PC Linux
CC diana.picus@linaro.org, llvm-bugs@lists.llvm.org
Fixed by commit(s)
Attachments test_ldstrex.pl (2972 bytes, application/x-perl)
Blocks
Blocked by
See also
Created attachment 17878
Script that reproduced the lack of error messages

The attached Perl script tests a matrix of arch/isa support for all exclusive
load/store operations, and it seems LLVM allows pre-v6T2 arches to emit Thumb2
code.

This is the script's output:

LLVM passes with: echo 'ldrexd r2, r3, [r4]' | llvm-mc -triple armv4 -o
/dev/null
LLVM passes with: echo 'strexd r0, r2, r3, [r4]' | llvm-mc -triple armv4 -o
/dev/null
LLVM passes with: echo 'ldrexd r2, r3, [r4]' | llvm-mc -triple armv5 -o
/dev/null
LLVM passes with: echo 'strexd r0, r2, r3, [r4]' | llvm-mc -triple armv5 -o
/dev/null
LLVM passes with: echo 'ldrexd r2, r3, [r4]' | llvm-mc -triple armv6 -o
/dev/null
LLVM passes with: echo 'strexd r0, r2, r3, [r4]' | llvm-mc -triple armv6 -o
/dev/null
LLVM passes with: echo 'ldrexd r2, r3, [r4]' | llvm-mc -triple armv6t2 -o
/dev/null
LLVM passes with: echo 'strexd r0, r2, r3, [r4]' | llvm-mc -triple armv6t2 -o
/dev/null
LLVM passes with: echo 'ldrex r3, [r4]' | llvm-mc -triple armv4 -o /dev/null
LLVM passes with: echo 'strex r2, r3, [r4]' | llvm-mc -triple armv4 -o /dev/null
LLVM passes with: echo 'ldrex r3, [r4]' | llvm-mc -triple armv5 -o /dev/null
LLVM passes with: echo 'strex r2, r3, [r4]' | llvm-mc -triple armv5 -o /dev/null
LLVM passes with: echo 'ldrexb r3, [r4]' | llvm-mc -triple armv4 -o /dev/null
LLVM passes with: echo 'strexb r2, r3, [r4]' | llvm-mc -triple armv4 -o
/dev/null
LLVM passes with: echo 'ldrexb r3, [r4]' | llvm-mc -triple armv5 -o /dev/null
LLVM passes with: echo 'strexb r2, r3, [r4]' | llvm-mc -triple armv5 -o
/dev/null
LLVM passes with: echo 'ldrexb r3, [r4]' | llvm-mc -triple armv6 -o /dev/null
LLVM passes with: echo 'strexb r2, r3, [r4]' | llvm-mc -triple armv6 -o
/dev/null
LLVM passes with: echo 'ldrexb r3, [r4]' | llvm-mc -triple armv6t2 -o /dev/null
LLVM passes with: echo 'strexb r2, r3, [r4]' | llvm-mc -triple armv6t2 -o
/dev/null
LLVM passes with: echo 'ldrexh r3, [r4]' | llvm-mc -triple armv4 -o /dev/null
LLVM passes with: echo 'strexh r2, r3, [r4]' | llvm-mc -triple armv4 -o
/dev/null
LLVM passes with: echo 'ldrexh r3, [r4]' | llvm-mc -triple armv5 -o /dev/null
LLVM passes with: echo 'strexh r2, r3, [r4]' | llvm-mc -triple armv5 -o
/dev/null
LLVM passes with: echo 'ldrexh r3, [r4]' | llvm-mc -triple armv6 -o /dev/null
LLVM passes with: echo 'strexh r2, r3, [r4]' | llvm-mc -triple armv6 -o
/dev/null
LLVM passes with: echo 'ldrexh r3, [r4]' | llvm-mc -triple armv6t2 -o /dev/null
LLVM passes with: echo 'strexh r2, r3, [r4]' | llvm-mc -triple armv6t2 -o
/dev/null
Number of tests: 128
   GCC failures: 0
  LLVM failures: 28
Quuxplusone commented 7 years ago

Attached test_ldstrex.pl (2972 bytes, application/x-perl): Script that reproduced the lack of error messages

Quuxplusone commented 7 years ago

This bug was discovered while investigating Bug #31058