Bug 111734 - Geometry shader with double interpolators fails in LLVM
Summary: Geometry shader with double interpolators fails in LLVM
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Vulkan/radeon (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: not set normal
Assignee: mesa-dev
QA Contact: mesa-dev
Depends on:
Reported: 2019-09-18 13:58 UTC by Baldur Karlsson
Modified: 2019-09-18 15:15 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

VkRunner test showing crash (697 bytes, text/plain)
2019-09-18 13:58 UTC, Baldur Karlsson

Description Baldur Karlsson 2019-09-18 13:58:57 UTC
Created attachment 145427 [details]
VkRunner test showing crash

When compiling a geometry shader with double inputs and outputs I get an LLVM fatal error:

LLVM ERROR: Cannot select: 0x55de91ee9320: v2i32 = bitcast 0x55de91ee9048
  0x55de91ee9048: f32,ch = BUFFER_LOAD<(dereferenceable load 4 from custom TargetCustom7, align 1, addrspace 4)> 0x55de91dcfbc8, 0x55de91e58860, Constant:i32<0>, 0x55de91ee8a98, Constant:i32<0>, Constant:i32<0>, Constant:i32<1>, Constant:i1<0>
    0x55de91e58860: v4i32,ch = load<(invariant load 16 from %ir.12, addrspace 4)> 0x55de91dcfbc8, 0x55de91e581e0, undef:i64
      0x55de91e581e0: i64 = add 0x55de91e587f8, Constant:i64<32>
        0x55de91e587f8: i64,ch = CopyFromReg 0x55de91dcfbc8, Register:i64 %0
          0x55de91ee8e40: i64 = Register %0
        0x55de91e58318: i64 = Constant<32>
      0x55de91e58380: i64 = undef
    0x55de91ee8b68: i32 = Constant<0>
    0x55de91ee8a98: i32 = add 0x55de91e58e10, Constant:i32<4096>
      0x55de91e58e10: i32 = shl 0x55de91e58998, Constant:i32<2>
        0x55de91e58998: i32,ch = CopyFromReg 0x55de91dcfbc8, Register:i32 %3
          0x55de91e586c0: i32 = Register %3
        0x55de91e58cd8: i32 = Constant<2>
      0x55de91ee8a30: i32 = Constant<4096>
    0x55de91ee8b68: i32 = Constant<0>
    0x55de91ee8b68: i32 = Constant<0>
    0x55de91e58ad0: i32 = Constant<1>
    0x55de91eeb340: i1 = Constant<0>
In function: main

with this geometry shader:

#version 450 core

layout(triangles) in;
layout(triangle_strip, max_vertices = 3) out;

layout(location = 0) in double InDouble[3];
layout(location = 0) out double OutDouble;

void main() {
  gl_Position = vec4(0);
  for(int i = 0; i < 3; i++) {
    OutDouble = InDouble[i];

I've attached a VkRunner test which shows the crash.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.