[llvm-bugs] [Bug 28266] New: clang-cl: psubb xmm0, byte ptr kFsub80 - error: invalid operand for instruction

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jun 22 13:05:49 PDT 2016


https://llvm.org/bugs/show_bug.cgi?id=28266

            Bug ID: 28266
           Summary: clang-cl: psubb xmm0, byte ptr kFsub80 - error:
                    invalid operand for instruction
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: fbarchard at google.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

The following builds with Visual C but not clang-cl

typedef __declspec(align(16)) uint8 uvec8[16];
static uvec8 kFsub80 =
  { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

    psubb      xmm0, kFsub80

clang-cl reports:
..\..\source\scale_win.cc(877,3):  error: invalid operand for instruction
  __asm {
  ^
<inline asm>(35,2):  note: instantiated into assembly here
        psubb xmm0, byte ptr kFsub80
        ^

as a work around I can cast the pointer:
psubb      xmm0, xmmword ptr kFsub80

For clangcl I'm using Visual C syntax
typedef __declspec(align(16)) uint8 uvec8[16];

but for clang I use GCC syntax
typedef uint8 __attribute__((vector_size(16))) uvec8;

Is there a Visual C way to declare a vector that is compatible with clangcl
without explicit casts?

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160622/c3e70b5f/attachment.html>


More information about the llvm-bugs mailing list