1; RUN: not llc %s -verify-machineinstrs=0 -mtriple i386-unknown-linux-gnu -mattr +avx512vl -o /dev/null 2>&1 | FileCheck %s 2 3define <4 x float> @testxmm_1(<4 x float> %_xmm0, i64 %_l) { 4; CHECK: error: inline assembly requires more registers than available 5entry: 6 %0 = tail call <4 x float> asm "vmovhlps $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i64 %_l, <4 x float> %_xmm0) 7 ret <4 x float> %0 8} 9 10 11define <4 x float> @testxmm_2(<4 x float> %_xmm0, i64 %_l) { 12; CHECK: error: inline assembly requires more registers than available 13entry: 14 %0 = tail call <4 x float> asm "vmovapd $1, $0", "=v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i64 %_l) 15 ret <4 x float> %0 16} 17 18 19define <4 x float> @testxmm_3(<4 x float> %_xmm0, i64 %_l) { 20; CHECK: error: inline assembly requires more registers than available 21entry: 22 %0 = tail call <4 x float> asm "vminpd $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i64 %_l, i64 %_l) 23 ret <4 x float> %0 24} 25 26 27define i64 @testxmm_4(<4 x float> %_xmm0, i64 %_l) { 28; CHECK: error: inline assembly requires more registers than available 29entry: 30 %0 = tail call i64 asm "vmulsd $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i64 %_l, <4 x float> %_xmm0) 31 ret i64 %0 32} 33 34 35define <4 x float> @testxmm_5(<4 x float> %_xmm0, i64 %_l) { 36; CHECK: error: inline assembly requires more registers than available 37entry: 38 %0 = tail call <4 x float> asm "vpabsq $1, $0", "=v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i64 %_l) 39 ret <4 x float> %0 40} 41 42 43define <4 x float> @testxmm_6(<4 x float> %_xmm0, i64 %_l) { 44; CHECK: error: inline assembly requires more registers than available 45entry: 46 %0 = tail call <4 x float> asm "vpandd $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(<4 x float> %_xmm0, i64 %_l) 47 ret <4 x float> %0 48} 49 50 51define <4 x float> @testxmm_7(<4 x float> %_xmm0, i64 %_l) { 52; CHECK: error: inline assembly requires more registers than available 53entry: 54 %0 = tail call <4 x float> asm "vpandnd $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(<4 x float> %_xmm0, i64 %_l) 55 ret <4 x float> %0 56} 57 58 59define <8 x float> @testymm_1(<8 x float> %_ymm0, <8 x float> %_ymm1) { 60; CHECK: error: inline assembly requires more registers than available 61entry: 62 %0 = tail call <8 x float> asm "vmovsldup $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1) 63 ret <8 x float> %0 64} 65 66 67define <8 x float> @testymm_2(<8 x float> %_ymm0, <8 x float> %_ymm1) { 68; CHECK: error: inline assembly requires more registers than available 69entry: 70 %0 = tail call <8 x float> asm "vmovapd $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1) 71 ret <8 x float> %0 72} 73 74 75define <8 x float> @testymm_3(<8 x float> %_ymm0, <8 x float> %_ymm1) { 76; CHECK: error: inline assembly requires more registers than available 77entry: 78 %0 = tail call <8 x float> asm "vminpd $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm1) 79 ret <8 x float> %0 80} 81 82 83define <8 x float> @testymm_4(<8 x float> %_ymm0, <8 x float> %_ymm1) { 84; CHECK: error: inline assembly requires more registers than available 85entry: 86 %0 = tail call <8 x float> asm "vpabsq $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1) 87 ret <8 x float> %0 88} 89 90 91define <8 x float> @testymm_5(<8 x float> %_ymm0, <8 x float> %_ymm1) { 92; CHECK: error: inline assembly requires more registers than available 93entry: 94 %0 = tail call <8 x float> asm "vpandd $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0) 95 ret <8 x float> %0 96} 97 98 99define <8 x float> @testymm_6(<8 x float> %_ymm0, <8 x float> %_ymm1) { 100; CHECK: error: inline assembly requires more registers than available 101entry: 102 %0 = tail call <8 x float> asm "vpandnd $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0) 103 ret <8 x float> %0 104} 105 106 107define <8 x float> @testymm_7(<8 x float> %_ymm0, <8 x float> %_ymm1) { 108; CHECK: error: inline assembly requires more registers than available 109entry: 110 %0 = tail call <8 x float> asm "vpminud $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0) 111 ret <8 x float> %0 112} 113 114 115define <8 x float> @testymm_8(<8 x float> %_ymm0, <8 x float> %_ymm1) { 116; CHECK: error: inline assembly requires more registers than available 117entry: 118 %0 = tail call <8 x float> asm "vpmaxsd $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0) 119 ret <8 x float> %0 120} 121 122 123define <8 x float> @testymm_9(<8 x float> %_ymm0, <8 x float> %_ymm1) { 124; CHECK: error: inline assembly requires more registers than available 125entry: 126 %0 = tail call <8 x float> asm "vmovups $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1) 127 ret <8 x float> %0 128} 129 130 131define <8 x float> @testymm_10(<8 x float> %_ymm0, <8 x float> %_ymm1) { 132; CHECK: error: inline assembly requires more registers than available 133entry: 134 %0 = tail call <8 x float> asm "vmovupd $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1) 135 ret <8 x float> %0 136} 137 138