mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 14:46:36 +00:00
[MC] Simplify MCBinaryExpr/MCUnaryExpr printing by reducing parentheses (#133674)
The existing pretty printer generates excessive parentheses for MCBinaryExpr expressions. This update removes unnecessary parentheses of MCBinaryExpr with +/- operators and MCUnaryExpr. Since relocatable expressions only use + and -, this change improves readability in most cases. Examples: - (SymA - SymB) + C now prints as SymA - SymB + C. This updates the output of -fexperimental-relative-c++-abi-vtables for AArch64 and x86 to `.long _ZN1B3fooEv@PLT-_ZTV1B-8` - expr + (MCTargetExpr) now prints as expr + MCTargetExpr, with this change primarily affecting AMDGPUMCExpr.
This commit is contained in:
parent
c9095aa310
commit
04a67528d3
@ -81,7 +81,8 @@ public:
|
||||
/// \name Utility Methods
|
||||
/// @{
|
||||
|
||||
void print(raw_ostream &OS, const MCAsmInfo *MAI) const;
|
||||
void print(raw_ostream &OS, const MCAsmInfo *MAI,
|
||||
int SurroundingPrec = 0) const;
|
||||
void dump() const;
|
||||
|
||||
/// Returns whether the given symbol is used anywhere in the expression or
|
||||
|
@ -37,10 +37,22 @@ STATISTIC(MCExprEvaluate, "Number of MCExpr evaluations");
|
||||
} // end namespace stats
|
||||
} // end anonymous namespace
|
||||
|
||||
static int getPrecedence(MCBinaryExpr::Opcode Op) {
|
||||
switch (Op) {
|
||||
case MCBinaryExpr::Add:
|
||||
case MCBinaryExpr::Sub:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// VariantKind printing and formatting utilize MAI. operator<< (dump and some
|
||||
// target code) specifies MAI as nullptr and should be avoided when MAI is
|
||||
// needed.
|
||||
void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
|
||||
void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI,
|
||||
int SurroundingPrec) const {
|
||||
constexpr int MaxPrec = 9;
|
||||
switch (getKind()) {
|
||||
case MCExpr::Target:
|
||||
return cast<MCTargetExpr>(this)->printImpl(OS, MAI);
|
||||
@ -98,24 +110,26 @@ void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
|
||||
case MCUnaryExpr::Not: OS << '~'; break;
|
||||
case MCUnaryExpr::Plus: OS << '+'; break;
|
||||
}
|
||||
bool Binary = UE.getSubExpr()->getKind() == MCExpr::Binary;
|
||||
if (Binary) OS << "(";
|
||||
UE.getSubExpr()->print(OS, MAI);
|
||||
if (Binary) OS << ")";
|
||||
UE.getSubExpr()->print(OS, MAI, MaxPrec);
|
||||
return;
|
||||
}
|
||||
|
||||
case MCExpr::Binary: {
|
||||
const MCBinaryExpr &BE = cast<MCBinaryExpr>(*this);
|
||||
|
||||
// Only print parens around the LHS if it is non-trivial.
|
||||
if (isa<MCConstantExpr>(BE.getLHS()) || isa<MCSymbolRefExpr>(BE.getLHS())) {
|
||||
BE.getLHS()->print(OS, MAI);
|
||||
} else {
|
||||
// We want to avoid redundant parentheses for relocatable expressions like
|
||||
// a-b+c.
|
||||
//
|
||||
// Print '(' if the current operator has lower precedence than the
|
||||
// surrounding operator, or if the surrounding operator's precedence is
|
||||
// unknown (set to HighPrecedence).
|
||||
int Prec = getPrecedence(BE.getOpcode());
|
||||
bool Paren = Prec < SurroundingPrec;
|
||||
if (Paren)
|
||||
OS << '(';
|
||||
BE.getLHS()->print(OS, MAI);
|
||||
OS << ')';
|
||||
}
|
||||
// Many operators' precedence is different from C. Set the precedence to
|
||||
// HighPrecedence for unknown operators.
|
||||
int SubPrec = Prec ? Prec : MaxPrec;
|
||||
BE.getLHS()->print(OS, MAI, SubPrec);
|
||||
|
||||
switch (BE.getOpcode()) {
|
||||
case MCBinaryExpr::Add:
|
||||
@ -123,6 +137,8 @@ void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
|
||||
if (const MCConstantExpr *RHSC = dyn_cast<MCConstantExpr>(BE.getRHS())) {
|
||||
if (RHSC->getValue() < 0) {
|
||||
OS << RHSC->getValue();
|
||||
if (Paren)
|
||||
OS << ')';
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -150,14 +166,9 @@ void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
|
||||
case MCBinaryExpr::Xor: OS << '^'; break;
|
||||
}
|
||||
|
||||
// Only print parens around the LHS if it is non-trivial.
|
||||
if (isa<MCConstantExpr>(BE.getRHS()) || isa<MCSymbolRefExpr>(BE.getRHS())) {
|
||||
BE.getRHS()->print(OS, MAI);
|
||||
} else {
|
||||
OS << '(';
|
||||
BE.getRHS()->print(OS, MAI);
|
||||
BE.getRHS()->print(OS, MAI, SubPrec + 1);
|
||||
if (Paren)
|
||||
OS << ')';
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -155,19 +155,19 @@ declare void @undef_func()
|
||||
|
||||
; GCN-LABEL: {{^}}kernel_call_undef_func:
|
||||
; GCN: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0)
|
||||
; GFX90A: .amdhsa_accum_offset ((((((alignto(max(1, kernel_call_undef_func.num_vgpr), 4))/4)-1)&(~65536))&63)+1)*4
|
||||
; GFX90A: .amdhsa_accum_offset (((((alignto(max(1, kernel_call_undef_func.num_vgpr), 4)/4)-1)&~65536)&63)+1)*4
|
||||
; GCN: .set kernel_call_undef_func.num_vgpr, max(32, amdgpu.max_num_vgpr)
|
||||
; GCN: .set kernel_call_undef_func.num_agpr, max(0, amdgpu.max_num_agpr)
|
||||
; GCN: NumVgprs: kernel_call_undef_func.num_vgpr
|
||||
; GCN: NumAgprs: kernel_call_undef_func.num_agpr
|
||||
; GCN: TotalNumVgprs: totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr)
|
||||
; GFX908: VGPRBlocks: ((alignto(max(max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0), 1), 4))/4)-1
|
||||
; GFX90A: VGPRBlocks: ((alignto(max(max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0), 1), 8))/8)-1
|
||||
; GFX908: VGPRBlocks: (alignto(max(max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0), 1), 4)/4)-1
|
||||
; GFX90A: VGPRBlocks: (alignto(max(max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0), 1), 8)/8)-1
|
||||
; GCN: NumVGPRsForWavesPerEU: max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0)
|
||||
; GFX90A: AccumOffset: ((((alignto(max(1, kernel_call_undef_func.num_vgpr), 4))/4)-1)+1)*4
|
||||
; GFX908: Occupancy: occupancy(10, 4, 256, 8, 10, max(kernel_call_undef_func.numbered_sgpr+(extrasgprs(kernel_call_undef_func.uses_vcc, kernel_call_undef_func.uses_flat_scratch, 1)), 1, 0), max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0))
|
||||
; GFX90A: Occupancy: occupancy(8, 8, 512, 8, 8, max(kernel_call_undef_func.numbered_sgpr+(extrasgprs(kernel_call_undef_func.uses_vcc, kernel_call_undef_func.uses_flat_scratch, 1)), 1, 0), max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0))
|
||||
; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: ((((alignto(max(1, kernel_call_undef_func.num_vgpr), 4))/4)-1)&(~65536))&63
|
||||
; GFX90A: AccumOffset: ((alignto(max(1, kernel_call_undef_func.num_vgpr), 4)/4)-1+1)*4
|
||||
; GFX908: Occupancy: occupancy(10, 4, 256, 8, 10, max(kernel_call_undef_func.numbered_sgpr+extrasgprs(kernel_call_undef_func.uses_vcc, kernel_call_undef_func.uses_flat_scratch, 1), 1, 0), max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0))
|
||||
; GFX90A: Occupancy: occupancy(8, 8, 512, 8, 8, max(kernel_call_undef_func.numbered_sgpr+extrasgprs(kernel_call_undef_func.uses_vcc, kernel_call_undef_func.uses_flat_scratch, 1), 1, 0), max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0))
|
||||
; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: (((alignto(max(1, kernel_call_undef_func.num_vgpr), 4)/4)-1)&~65536)&63
|
||||
define amdgpu_kernel void @kernel_call_undef_func() #0 {
|
||||
bb:
|
||||
call void @undef_func()
|
||||
|
@ -9,8 +9,8 @@
|
||||
|
||||
; ALL-LABEL: {{^}}kernel:
|
||||
; ALL: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel.num_agpr, kernel.num_vgpr), 1, 0)
|
||||
; ALL-NEXT: .amdhsa_next_free_sgpr (max(kernel.numbered_sgpr+(extrasgprs(kernel.uses_vcc, kernel.uses_flat_scratch, 1)), 1, 0))-(extrasgprs(kernel.uses_vcc, kernel.uses_flat_scratch, 1))
|
||||
; GFX90A-NEXT: .amdhsa_accum_offset ((((((alignto(max(1, kernel.num_vgpr), 4))/4)-1)&(~65536))&63)+1)*4
|
||||
; ALL-NEXT: .amdhsa_next_free_sgpr max(kernel.numbered_sgpr+extrasgprs(kernel.uses_vcc, kernel.uses_flat_scratch, 1), 1, 0)-extrasgprs(kernel.uses_vcc, kernel.uses_flat_scratch, 1)
|
||||
; GFX90A-NEXT: .amdhsa_accum_offset (((((alignto(max(1, kernel.num_vgpr), 4)/4)-1)&~65536)&63)+1)*4
|
||||
|
||||
; ALL: .set kernel.num_vgpr, max(41, .Laliasee_default.num_vgpr)
|
||||
; ALL-NEXT: .set kernel.num_agpr, max(0, .Laliasee_default.num_agpr)
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
; CHECK-LABEL: {{^}}kernel1:
|
||||
; CHECK: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel1.num_agpr, kernel1.num_vgpr), 1, 0)
|
||||
; CHECK-NEXT: .amdhsa_next_free_sgpr (max(kernel1.numbered_sgpr+(extrasgprs(kernel1.uses_vcc, kernel1.uses_flat_scratch, 1)), 1, 0))-(extrasgprs(kernel1.uses_vcc, kernel1.uses_flat_scratch, 1))
|
||||
; CHECK-NEXT: .amdhsa_next_free_sgpr max(kernel1.numbered_sgpr+extrasgprs(kernel1.uses_vcc, kernel1.uses_flat_scratch, 1), 1, 0)-extrasgprs(kernel1.uses_vcc, kernel1.uses_flat_scratch, 1)
|
||||
|
||||
; CHECK: .set kernel1.num_vgpr, max(42, .Laliasee_vgpr32_sgpr76.num_vgpr)
|
||||
; CHECK-NEXT: .set kernel1.num_agpr, max(0, .Laliasee_vgpr32_sgpr76.num_agpr)
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
; CHECK-LABEL: {{^}}kernel2:
|
||||
; CHECK: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel2.num_agpr, kernel2.num_vgpr), 1, 0)
|
||||
; CHECK-NEXT: .amdhsa_next_free_sgpr (max(kernel2.numbered_sgpr+(extrasgprs(kernel2.uses_vcc, kernel2.uses_flat_scratch, 1)), 1, 0))-(extrasgprs(kernel2.uses_vcc, kernel2.uses_flat_scratch, 1))
|
||||
; CHECK-NEXT: .amdhsa_next_free_sgpr max(kernel2.numbered_sgpr+extrasgprs(kernel2.uses_vcc, kernel2.uses_flat_scratch, 1), 1, 0)-extrasgprs(kernel2.uses_vcc, kernel2.uses_flat_scratch, 1)
|
||||
|
||||
; CHECK: .set kernel2.num_vgpr, max(41, .Laliasee_vgpr64_sgpr102.num_vgpr)
|
||||
; CHECK-NEXT: .set kernel2.num_agpr, max(0, .Laliasee_vgpr64_sgpr102.num_agpr)
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
; CHECK-LABEL: {{^}}kernel3:
|
||||
; CHECK: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel3.num_agpr, kernel3.num_vgpr), 1, 0)
|
||||
; CHECK-NEXT: .amdhsa_next_free_sgpr (max(kernel3.numbered_sgpr+(extrasgprs(kernel3.uses_vcc, kernel3.uses_flat_scratch, 1)), 1, 0))-(extrasgprs(kernel3.uses_vcc, kernel3.uses_flat_scratch, 1))
|
||||
; CHECK-NEXT: .amdhsa_next_free_sgpr max(kernel3.numbered_sgpr+extrasgprs(kernel3.uses_vcc, kernel3.uses_flat_scratch, 1), 1, 0)-extrasgprs(kernel3.uses_vcc, kernel3.uses_flat_scratch, 1)
|
||||
|
||||
; CHECK: .set kernel3.num_vgpr, max(41, .Laliasee_vgpr256_sgpr102.num_vgpr)
|
||||
; CHECK-NEXT: .set kernel3.num_agpr, max(0, .Laliasee_vgpr256_sgpr102.num_agpr)
|
||||
|
@ -24,7 +24,7 @@ define void @use_vcc() #1 {
|
||||
; GCN: .set indirect_use_vcc.num_vgpr, max(41, use_vcc.num_vgpr)
|
||||
; GCN: .set indirect_use_vcc.num_agpr, max(0, use_vcc.num_agpr)
|
||||
; GCN: .set indirect_use_vcc.numbered_sgpr, max(34, use_vcc.numbered_sgpr)
|
||||
; GCN: .set indirect_use_vcc.private_seg_size, 16+(max(use_vcc.private_seg_size))
|
||||
; GCN: .set indirect_use_vcc.private_seg_size, 16+max(use_vcc.private_seg_size)
|
||||
; GCN: .set indirect_use_vcc.uses_vcc, or(1, use_vcc.uses_vcc)
|
||||
; GCN: .set indirect_use_vcc.uses_flat_scratch, or(0, use_vcc.uses_flat_scratch)
|
||||
; GCN: .set indirect_use_vcc.has_dyn_sized_stack, or(0, use_vcc.has_dyn_sized_stack)
|
||||
@ -42,7 +42,7 @@ define void @indirect_use_vcc() #1 {
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.num_vgpr, max(32, indirect_use_vcc.num_vgpr)
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.num_agpr, max(0, indirect_use_vcc.num_agpr)
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.numbered_sgpr, max(33, indirect_use_vcc.numbered_sgpr)
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.private_seg_size, 0+(max(indirect_use_vcc.private_seg_size))
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.private_seg_size, 0+max(indirect_use_vcc.private_seg_size)
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.uses_vcc, or(1, indirect_use_vcc.uses_vcc)
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.uses_flat_scratch, or(1, indirect_use_vcc.uses_flat_scratch)
|
||||
; GCN: .set indirect_2level_use_vcc_kernel.has_dyn_sized_stack, or(0, indirect_use_vcc.has_dyn_sized_stack)
|
||||
@ -78,7 +78,7 @@ define void @use_flat_scratch() #1 {
|
||||
; GCN: .set indirect_use_flat_scratch.num_vgpr, max(41, use_flat_scratch.num_vgpr)
|
||||
; GCN: .set indirect_use_flat_scratch.num_agpr, max(0, use_flat_scratch.num_agpr)
|
||||
; GCN: .set indirect_use_flat_scratch.numbered_sgpr, max(34, use_flat_scratch.numbered_sgpr)
|
||||
; GCN: .set indirect_use_flat_scratch.private_seg_size, 16+(max(use_flat_scratch.private_seg_size))
|
||||
; GCN: .set indirect_use_flat_scratch.private_seg_size, 16+max(use_flat_scratch.private_seg_size)
|
||||
; GCN: .set indirect_use_flat_scratch.uses_vcc, or(1, use_flat_scratch.uses_vcc)
|
||||
; GCN: .set indirect_use_flat_scratch.uses_flat_scratch, or(0, use_flat_scratch.uses_flat_scratch)
|
||||
; GCN: .set indirect_use_flat_scratch.has_dyn_sized_stack, or(0, use_flat_scratch.has_dyn_sized_stack)
|
||||
@ -96,7 +96,7 @@ define void @indirect_use_flat_scratch() #1 {
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.num_vgpr, max(32, indirect_use_flat_scratch.num_vgpr)
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.num_agpr, max(0, indirect_use_flat_scratch.num_agpr)
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.numbered_sgpr, max(33, indirect_use_flat_scratch.numbered_sgpr)
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.private_seg_size, 0+(max(indirect_use_flat_scratch.private_seg_size))
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.private_seg_size, 0+max(indirect_use_flat_scratch.private_seg_size)
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.uses_vcc, or(1, indirect_use_flat_scratch.uses_vcc)
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.uses_flat_scratch, or(1, indirect_use_flat_scratch.uses_flat_scratch)
|
||||
; GCN: .set indirect_2level_use_flat_scratch_kernel.has_dyn_sized_stack, or(0, indirect_use_flat_scratch.has_dyn_sized_stack)
|
||||
@ -133,7 +133,7 @@ define void @use_10_vgpr() #1 {
|
||||
; GCN: .set indirect_use_10_vgpr.num_vgpr, max(41, use_10_vgpr.num_vgpr)
|
||||
; GCN: .set indirect_use_10_vgpr.num_agpr, max(0, use_10_vgpr.num_agpr)
|
||||
; GCN: .set indirect_use_10_vgpr.numbered_sgpr, max(34, use_10_vgpr.numbered_sgpr)
|
||||
; GCN: .set indirect_use_10_vgpr.private_seg_size, 16+(max(use_10_vgpr.private_seg_size))
|
||||
; GCN: .set indirect_use_10_vgpr.private_seg_size, 16+max(use_10_vgpr.private_seg_size)
|
||||
; GCN: .set indirect_use_10_vgpr.uses_vcc, or(1, use_10_vgpr.uses_vcc)
|
||||
; GCN: .set indirect_use_10_vgpr.uses_flat_scratch, or(0, use_10_vgpr.uses_flat_scratch)
|
||||
; GCN: .set indirect_use_10_vgpr.has_dyn_sized_stack, or(0, use_10_vgpr.has_dyn_sized_stack)
|
||||
@ -151,7 +151,7 @@ define void @indirect_use_10_vgpr() #0 {
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.num_vgpr, max(32, indirect_use_10_vgpr.num_vgpr)
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.num_agpr, max(0, indirect_use_10_vgpr.num_agpr)
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.numbered_sgpr, max(33, indirect_use_10_vgpr.numbered_sgpr)
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.private_seg_size, 0+(max(indirect_use_10_vgpr.private_seg_size))
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.private_seg_size, 0+max(indirect_use_10_vgpr.private_seg_size)
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.uses_vcc, or(1, indirect_use_10_vgpr.uses_vcc)
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.uses_flat_scratch, or(1, indirect_use_10_vgpr.uses_flat_scratch)
|
||||
; GCN: .set indirect_2_level_use_10_vgpr.has_dyn_sized_stack, or(0, indirect_use_10_vgpr.has_dyn_sized_stack)
|
||||
@ -187,7 +187,7 @@ define void @use_50_vgpr() #1 {
|
||||
; GCN: .set indirect_use_50_vgpr.num_vgpr, max(41, use_50_vgpr.num_vgpr)
|
||||
; GCN: .set indirect_use_50_vgpr.num_agpr, max(0, use_50_vgpr.num_agpr)
|
||||
; GCN: .set indirect_use_50_vgpr.numbered_sgpr, max(34, use_50_vgpr.numbered_sgpr)
|
||||
; GCN: .set indirect_use_50_vgpr.private_seg_size, 16+(max(use_50_vgpr.private_seg_size))
|
||||
; GCN: .set indirect_use_50_vgpr.private_seg_size, 16+max(use_50_vgpr.private_seg_size)
|
||||
; GCN: .set indirect_use_50_vgpr.uses_vcc, or(1, use_50_vgpr.uses_vcc)
|
||||
; GCN: .set indirect_use_50_vgpr.uses_flat_scratch, or(0, use_50_vgpr.uses_flat_scratch)
|
||||
; GCN: .set indirect_use_50_vgpr.has_dyn_sized_stack, or(0, use_50_vgpr.has_dyn_sized_stack)
|
||||
@ -223,7 +223,7 @@ define void @use_80_sgpr() #1 {
|
||||
; GCN: .set indirect_use_80_sgpr.num_vgpr, max(41, use_80_sgpr.num_vgpr)
|
||||
; GCN: .set indirect_use_80_sgpr.num_agpr, max(0, use_80_sgpr.num_agpr)
|
||||
; GCN: .set indirect_use_80_sgpr.numbered_sgpr, max(34, use_80_sgpr.numbered_sgpr)
|
||||
; GCN: .set indirect_use_80_sgpr.private_seg_size, 16+(max(use_80_sgpr.private_seg_size))
|
||||
; GCN: .set indirect_use_80_sgpr.private_seg_size, 16+max(use_80_sgpr.private_seg_size)
|
||||
; GCN: .set indirect_use_80_sgpr.uses_vcc, or(1, use_80_sgpr.uses_vcc)
|
||||
; GCN: .set indirect_use_80_sgpr.uses_flat_scratch, or(0, use_80_sgpr.uses_flat_scratch)
|
||||
; GCN: .set indirect_use_80_sgpr.has_dyn_sized_stack, or(0, use_80_sgpr.has_dyn_sized_stack)
|
||||
@ -241,7 +241,7 @@ define void @indirect_use_80_sgpr() #1 {
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.num_vgpr, max(32, indirect_use_80_sgpr.num_vgpr)
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.num_agpr, max(0, indirect_use_80_sgpr.num_agpr)
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.numbered_sgpr, max(33, indirect_use_80_sgpr.numbered_sgpr)
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.private_seg_size, 0+(max(indirect_use_80_sgpr.private_seg_size))
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.private_seg_size, 0+max(indirect_use_80_sgpr.private_seg_size)
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.uses_vcc, or(1, indirect_use_80_sgpr.uses_vcc)
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.uses_flat_scratch, or(1, indirect_use_80_sgpr.uses_flat_scratch)
|
||||
; GCN: .set indirect_2_level_use_80_sgpr.has_dyn_sized_stack, or(0, indirect_use_80_sgpr.has_dyn_sized_stack)
|
||||
@ -297,7 +297,7 @@ define void @use_stack1() #1 {
|
||||
; GCN: .set indirect_use_stack.num_vgpr, max(41, use_stack0.num_vgpr)
|
||||
; GCN: .set indirect_use_stack.num_agpr, max(0, use_stack0.num_agpr)
|
||||
; GCN: .set indirect_use_stack.numbered_sgpr, max(34, use_stack0.numbered_sgpr)
|
||||
; GCN: .set indirect_use_stack.private_seg_size, 80+(max(use_stack0.private_seg_size))
|
||||
; GCN: .set indirect_use_stack.private_seg_size, 80+max(use_stack0.private_seg_size)
|
||||
; GCN: .set indirect_use_stack.uses_vcc, or(1, use_stack0.uses_vcc)
|
||||
; GCN: .set indirect_use_stack.uses_flat_scratch, or(0, use_stack0.uses_flat_scratch)
|
||||
; GCN: .set indirect_use_stack.has_dyn_sized_stack, or(0, use_stack0.has_dyn_sized_stack)
|
||||
@ -317,7 +317,7 @@ define void @indirect_use_stack() #1 {
|
||||
; GCN: .set indirect_2_level_use_stack.num_vgpr, max(32, indirect_use_stack.num_vgpr)
|
||||
; GCN: .set indirect_2_level_use_stack.num_agpr, max(0, indirect_use_stack.num_agpr)
|
||||
; GCN: .set indirect_2_level_use_stack.numbered_sgpr, max(33, indirect_use_stack.numbered_sgpr)
|
||||
; GCN: .set indirect_2_level_use_stack.private_seg_size, 0+(max(indirect_use_stack.private_seg_size))
|
||||
; GCN: .set indirect_2_level_use_stack.private_seg_size, 0+max(indirect_use_stack.private_seg_size)
|
||||
; GCN: .set indirect_2_level_use_stack.uses_vcc, or(1, indirect_use_stack.uses_vcc)
|
||||
; GCN: .set indirect_2_level_use_stack.uses_flat_scratch, or(1, indirect_use_stack.uses_flat_scratch)
|
||||
; GCN: .set indirect_2_level_use_stack.has_dyn_sized_stack, or(0, indirect_use_stack.has_dyn_sized_stack)
|
||||
@ -337,7 +337,7 @@ define amdgpu_kernel void @indirect_2_level_use_stack() #0 {
|
||||
; GCN: .set multi_call_use_use_stack.num_vgpr, max(41, use_stack0.num_vgpr, use_stack1.num_vgpr)
|
||||
; GCN: .set multi_call_use_use_stack.num_agpr, max(0, use_stack0.num_agpr, use_stack1.num_agpr)
|
||||
; GCN: .set multi_call_use_use_stack.numbered_sgpr, max(52, use_stack0.numbered_sgpr, use_stack1.numbered_sgpr)
|
||||
; GCN: .set multi_call_use_use_stack.private_seg_size, 0+(max(use_stack0.private_seg_size, use_stack1.private_seg_size))
|
||||
; GCN: .set multi_call_use_use_stack.private_seg_size, 0+max(use_stack0.private_seg_size, use_stack1.private_seg_size)
|
||||
; GCN: .set multi_call_use_use_stack.uses_vcc, or(1, use_stack0.uses_vcc, use_stack1.uses_vcc)
|
||||
; GCN: .set multi_call_use_use_stack.uses_flat_scratch, or(1, use_stack0.uses_flat_scratch, use_stack1.uses_flat_scratch)
|
||||
; GCN: .set multi_call_use_use_stack.has_dyn_sized_stack, or(0, use_stack0.has_dyn_sized_stack, use_stack1.has_dyn_sized_stack)
|
||||
@ -358,7 +358,7 @@ declare void @external() #0
|
||||
; GCN: .set multi_call_with_external.num_vgpr, max(41, amdgpu.max_num_vgpr)
|
||||
; GCN: .set multi_call_with_external.num_agpr, max(0, amdgpu.max_num_agpr)
|
||||
; GCN: .set multi_call_with_external.numbered_sgpr, max(52, amdgpu.max_num_sgpr)
|
||||
; GCN: .set multi_call_with_external.private_seg_size, 0+(max(use_stack0.private_seg_size, use_stack1.private_seg_size))
|
||||
; GCN: .set multi_call_with_external.private_seg_size, 0+max(use_stack0.private_seg_size, use_stack1.private_seg_size)
|
||||
; GCN: .set multi_call_with_external.uses_vcc, 1
|
||||
; GCN: .set multi_call_with_external.uses_flat_scratch, 1
|
||||
; GCN: .set multi_call_with_external.has_dyn_sized_stack, 1
|
||||
@ -378,7 +378,7 @@ define amdgpu_kernel void @multi_call_with_external() #0 {
|
||||
; GCN: .set multi_call_with_external_and_duplicates.num_vgpr, max(41, amdgpu.max_num_vgpr)
|
||||
; GCN: .set multi_call_with_external_and_duplicates.num_agpr, max(0, amdgpu.max_num_agpr)
|
||||
; GCN: .set multi_call_with_external_and_duplicates.numbered_sgpr, max(54, amdgpu.max_num_sgpr)
|
||||
; GCN: .set multi_call_with_external_and_duplicates.private_seg_size, 0+(max(use_stack0.private_seg_size, use_stack1.private_seg_size))
|
||||
; GCN: .set multi_call_with_external_and_duplicates.private_seg_size, 0+max(use_stack0.private_seg_size, use_stack1.private_seg_size)
|
||||
; GCN: .set multi_call_with_external_and_duplicates.uses_vcc, 1
|
||||
; GCN: .set multi_call_with_external_and_duplicates.uses_flat_scratch, 1
|
||||
; GCN: .set multi_call_with_external_and_duplicates.has_dyn_sized_stack, 1
|
||||
@ -467,7 +467,7 @@ ret:
|
||||
; GCN: .set usage_direct_recursion.num_vgpr, max(32, direct_recursion_use_stack.num_vgpr)
|
||||
; GCN: .set usage_direct_recursion.num_agpr, max(0, direct_recursion_use_stack.num_agpr)
|
||||
; GCN: .set usage_direct_recursion.numbered_sgpr, max(33, direct_recursion_use_stack.numbered_sgpr)
|
||||
; GCN: .set usage_direct_recursion.private_seg_size, 0+(max(direct_recursion_use_stack.private_seg_size))
|
||||
; GCN: .set usage_direct_recursion.private_seg_size, 0+max(direct_recursion_use_stack.private_seg_size)
|
||||
; GCN: .set usage_direct_recursion.uses_vcc, or(1, direct_recursion_use_stack.uses_vcc)
|
||||
; GCN: .set usage_direct_recursion.uses_flat_scratch, or(1, direct_recursion_use_stack.uses_flat_scratch)
|
||||
; GCN: .set usage_direct_recursion.has_dyn_sized_stack, or(0, direct_recursion_use_stack.has_dyn_sized_stack)
|
||||
@ -485,15 +485,15 @@ define amdgpu_kernel void @usage_direct_recursion(i32 %n) #0 {
|
||||
; GCN: .set multi_stage_recurse2.num_vgpr, max(43, multi_stage_recurse1.num_vgpr)
|
||||
; GCN: .set multi_stage_recurse2.num_agpr, max(0, multi_stage_recurse1.num_agpr)
|
||||
; GCN: .set multi_stage_recurse2.numbered_sgpr, max(34, multi_stage_recurse1.numbered_sgpr)
|
||||
; GCN: .set multi_stage_recurse2.private_seg_size, 16+(max(multi_stage_recurse1.private_seg_size))
|
||||
; GCN: .set multi_stage_recurse2.private_seg_size, 16+max(multi_stage_recurse1.private_seg_size)
|
||||
; GCN: .set multi_stage_recurse2.uses_vcc, or(1, multi_stage_recurse1.uses_vcc)
|
||||
; GCN: .set multi_stage_recurse2.uses_flat_scratch, or(0, multi_stage_recurse1.uses_flat_scratch)
|
||||
; GCN: .set multi_stage_recurse2.has_dyn_sized_stack, or(0, multi_stage_recurse1.has_dyn_sized_stack)
|
||||
; GCN: .set multi_stage_recurse2.has_recursion, or(1, multi_stage_recurse1.has_recursion)
|
||||
; GCN: .set multi_stage_recurse2.has_indirect_call, or(0, multi_stage_recurse1.has_indirect_call)
|
||||
; GCN: TotalNumSgprs: multi_stage_recurse2.numbered_sgpr+(extrasgprs(multi_stage_recurse2.uses_vcc, multi_stage_recurse2.uses_flat_scratch, 1))
|
||||
; GCN: TotalNumSgprs: multi_stage_recurse2.numbered_sgpr+extrasgprs(multi_stage_recurse2.uses_vcc, multi_stage_recurse2.uses_flat_scratch, 1)
|
||||
; GCN: NumVgprs: max(43, multi_stage_recurse1.num_vgpr)
|
||||
; GCN: ScratchSize: 16+(max(multi_stage_recurse1.private_seg_size))
|
||||
; GCN: ScratchSize: 16+max(multi_stage_recurse1.private_seg_size)
|
||||
; GCN-LABEL: {{^}}multi_stage_recurse1:
|
||||
; GCN: .set multi_stage_recurse1.num_vgpr, max(48, amdgpu.max_num_vgpr)
|
||||
; GCN: .set multi_stage_recurse1.num_agpr, max(0, amdgpu.max_num_agpr)
|
||||
@ -522,7 +522,7 @@ define void @multi_stage_recurse2(i32 %val) #2 {
|
||||
; GCN: .set usage_multi_stage_recurse.num_vgpr, max(32, multi_stage_recurse1.num_vgpr)
|
||||
; GCN: .set usage_multi_stage_recurse.num_agpr, max(0, multi_stage_recurse1.num_agpr)
|
||||
; GCN: .set usage_multi_stage_recurse.numbered_sgpr, max(33, multi_stage_recurse1.numbered_sgpr)
|
||||
; GCN: .set usage_multi_stage_recurse.private_seg_size, 0+(max(multi_stage_recurse1.private_seg_size))
|
||||
; GCN: .set usage_multi_stage_recurse.private_seg_size, 0+max(multi_stage_recurse1.private_seg_size)
|
||||
; GCN: .set usage_multi_stage_recurse.uses_vcc, or(1, multi_stage_recurse1.uses_vcc)
|
||||
; GCN: .set usage_multi_stage_recurse.uses_flat_scratch, or(1, multi_stage_recurse1.uses_flat_scratch)
|
||||
; GCN: .set usage_multi_stage_recurse.has_dyn_sized_stack, or(0, multi_stage_recurse1.has_dyn_sized_stack)
|
||||
@ -540,15 +540,15 @@ define amdgpu_kernel void @usage_multi_stage_recurse(i32 %n) #0 {
|
||||
; GCN: .set multi_stage_recurse_noattr2.num_vgpr, max(41, multi_stage_recurse_noattr1.num_vgpr)
|
||||
; GCN: .set multi_stage_recurse_noattr2.num_agpr, max(0, multi_stage_recurse_noattr1.num_agpr)
|
||||
; GCN: .set multi_stage_recurse_noattr2.numbered_sgpr, max(54, multi_stage_recurse_noattr1.numbered_sgpr)
|
||||
; GCN: .set multi_stage_recurse_noattr2.private_seg_size, 16+(max(multi_stage_recurse_noattr1.private_seg_size))
|
||||
; GCN: .set multi_stage_recurse_noattr2.private_seg_size, 16+max(multi_stage_recurse_noattr1.private_seg_size)
|
||||
; GCN: .set multi_stage_recurse_noattr2.uses_vcc, or(1, multi_stage_recurse_noattr1.uses_vcc)
|
||||
; GCN: .set multi_stage_recurse_noattr2.uses_flat_scratch, or(0, multi_stage_recurse_noattr1.uses_flat_scratch)
|
||||
; GCN: .set multi_stage_recurse_noattr2.has_dyn_sized_stack, or(0, multi_stage_recurse_noattr1.has_dyn_sized_stack)
|
||||
; GCN: .set multi_stage_recurse_noattr2.has_recursion, or(0, multi_stage_recurse_noattr1.has_recursion)
|
||||
; GCN: .set multi_stage_recurse_noattr2.has_indirect_call, or(0, multi_stage_recurse_noattr1.has_indirect_call)
|
||||
; GCN: TotalNumSgprs: multi_stage_recurse_noattr2.numbered_sgpr+(extrasgprs(multi_stage_recurse_noattr2.uses_vcc, multi_stage_recurse_noattr2.uses_flat_scratch, 1))
|
||||
; GCN: TotalNumSgprs: multi_stage_recurse_noattr2.numbered_sgpr+extrasgprs(multi_stage_recurse_noattr2.uses_vcc, multi_stage_recurse_noattr2.uses_flat_scratch, 1)
|
||||
; GCN: NumVgprs: max(41, multi_stage_recurse_noattr1.num_vgpr)
|
||||
; GCN: ScratchSize: 16+(max(multi_stage_recurse_noattr1.private_seg_size))
|
||||
; GCN: ScratchSize: 16+max(multi_stage_recurse_noattr1.private_seg_size)
|
||||
; GCN-LABEL: {{^}}multi_stage_recurse_noattr1:
|
||||
; GCN: .set multi_stage_recurse_noattr1.num_vgpr, max(41, amdgpu.max_num_vgpr)
|
||||
; GCN: .set multi_stage_recurse_noattr1.num_agpr, max(0, amdgpu.max_num_agpr)
|
||||
@ -577,7 +577,7 @@ define void @multi_stage_recurse_noattr2(i32 %val) #0 {
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.num_vgpr, max(32, multi_stage_recurse_noattr1.num_vgpr)
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.num_agpr, max(0, multi_stage_recurse_noattr1.num_agpr)
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.numbered_sgpr, max(33, multi_stage_recurse_noattr1.numbered_sgpr)
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.private_seg_size, 0+(max(multi_stage_recurse_noattr1.private_seg_size))
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.private_seg_size, 0+max(multi_stage_recurse_noattr1.private_seg_size)
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.uses_vcc, or(1, multi_stage_recurse_noattr1.uses_vcc)
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.uses_flat_scratch, or(1, multi_stage_recurse_noattr1.uses_flat_scratch)
|
||||
; GCN: .set usage_multi_stage_recurse_noattrs.has_dyn_sized_stack, or(0, multi_stage_recurse_noattr1.has_dyn_sized_stack)
|
||||
@ -595,7 +595,7 @@ define amdgpu_kernel void @usage_multi_stage_recurse_noattrs(i32 %n) #0 {
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.num_vgpr, max(41, use_stack0.num_vgpr, use_stack1.num_vgpr, multi_stage_recurse1.num_vgpr)
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.num_agpr, max(0, use_stack0.num_agpr, use_stack1.num_agpr, multi_stage_recurse1.num_agpr)
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.numbered_sgpr, max(53, use_stack0.numbered_sgpr, use_stack1.numbered_sgpr, multi_stage_recurse1.numbered_sgpr)
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.private_seg_size, 0+(max(use_stack0.private_seg_size, use_stack1.private_seg_size, multi_stage_recurse1.private_seg_size))
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.private_seg_size, 0+max(use_stack0.private_seg_size, use_stack1.private_seg_size, multi_stage_recurse1.private_seg_size)
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.uses_vcc, or(1, use_stack0.uses_vcc, use_stack1.uses_vcc, multi_stage_recurse1.uses_vcc)
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.uses_flat_scratch, or(1, use_stack0.uses_flat_scratch, use_stack1.uses_flat_scratch, multi_stage_recurse1.uses_flat_scratch)
|
||||
; GCN: .set multi_call_with_multi_stage_recurse.has_dyn_sized_stack, or(0, use_stack0.has_dyn_sized_stack, use_stack1.has_dyn_sized_stack, multi_stage_recurse1.has_dyn_sized_stack)
|
||||
|
@ -111,7 +111,7 @@ define void @HU_Start() {
|
||||
; CHECK: .set P_SpawnPlayer.num_vgpr, max(43, G_PlayerReborn.num_vgpr, P_SetThingPosition.num_vgpr, P_SetupPsprites.num_vgpr, HU_Start.num_vgpr)
|
||||
; CHECK: .set P_SpawnPlayer.num_agpr, max(0, G_PlayerReborn.num_agpr, P_SetThingPosition.num_agpr, P_SetupPsprites.num_agpr, HU_Start.num_agpr)
|
||||
; CHECK: .set P_SpawnPlayer.numbered_sgpr, max(84, G_PlayerReborn.numbered_sgpr, P_SetThingPosition.numbered_sgpr, P_SetupPsprites.numbered_sgpr, HU_Start.numbered_sgpr)
|
||||
; CHECK: .set P_SpawnPlayer.private_seg_size, 16+(max(G_PlayerReborn.private_seg_size, P_SetThingPosition.private_seg_size, P_SetupPsprites.private_seg_size, HU_Start.private_seg_size))
|
||||
; CHECK: .set P_SpawnPlayer.private_seg_size, 16+max(G_PlayerReborn.private_seg_size, P_SetThingPosition.private_seg_size, P_SetupPsprites.private_seg_size, HU_Start.private_seg_size)
|
||||
; CHECK: .set P_SpawnPlayer.uses_vcc, or(1, G_PlayerReborn.uses_vcc, P_SetThingPosition.uses_vcc, P_SetupPsprites.uses_vcc, HU_Start.uses_vcc)
|
||||
; CHECK: .set P_SpawnPlayer.uses_flat_scratch, or(0, G_PlayerReborn.uses_flat_scratch, P_SetThingPosition.uses_flat_scratch, P_SetupPsprites.uses_flat_scratch, HU_Start.uses_flat_scratch)
|
||||
; CHECK: .set P_SpawnPlayer.has_dyn_sized_stack, or(0, G_PlayerReborn.has_dyn_sized_stack, P_SetThingPosition.has_dyn_sized_stack, P_SetupPsprites.has_dyn_sized_stack, HU_Start.has_dyn_sized_stack)
|
||||
@ -145,7 +145,7 @@ define void @I_Error(...) {
|
||||
; CHECK: .set G_DoReborn.num_vgpr, max(44, P_RemoveMobj.num_vgpr, P_SpawnMobj.num_vgpr, P_SpawnPlayer.num_vgpr, I_Error.num_vgpr)
|
||||
; CHECK: .set G_DoReborn.num_agpr, max(0, P_RemoveMobj.num_agpr, P_SpawnMobj.num_agpr, P_SpawnPlayer.num_agpr, I_Error.num_agpr)
|
||||
; CHECK: .set G_DoReborn.numbered_sgpr, max(104, P_RemoveMobj.numbered_sgpr, P_SpawnMobj.numbered_sgpr, P_SpawnPlayer.numbered_sgpr, I_Error.numbered_sgpr)
|
||||
; CHECK: .set G_DoReborn.private_seg_size, 32+(max(P_RemoveMobj.private_seg_size, P_SpawnMobj.private_seg_size, P_SpawnPlayer.private_seg_size, I_Error.private_seg_size))
|
||||
; CHECK: .set G_DoReborn.private_seg_size, 32+max(P_RemoveMobj.private_seg_size, P_SpawnMobj.private_seg_size, P_SpawnPlayer.private_seg_size, I_Error.private_seg_size)
|
||||
; CHECK: .set G_DoReborn.uses_vcc, or(1, P_RemoveMobj.uses_vcc, P_SpawnMobj.uses_vcc, P_SpawnPlayer.uses_vcc, I_Error.uses_vcc)
|
||||
; CHECK: .set G_DoReborn.uses_flat_scratch, or(0, P_RemoveMobj.uses_flat_scratch, P_SpawnMobj.uses_flat_scratch, P_SpawnPlayer.uses_flat_scratch, I_Error.uses_flat_scratch)
|
||||
; CHECK: .set G_DoReborn.has_dyn_sized_stack, or(0, P_RemoveMobj.has_dyn_sized_stack, P_SpawnMobj.has_dyn_sized_stack, P_SpawnPlayer.has_dyn_sized_stack, I_Error.has_dyn_sized_stack)
|
||||
@ -219,7 +219,7 @@ define void @F_Ticker() {
|
||||
; CHECK: .set G_CheckDemoStatus.num_vgpr, max(43, I_Quit.num_vgpr, D_AdvanceDemo.num_vgpr, I_Error.num_vgpr)
|
||||
; CHECK: .set G_CheckDemoStatus.num_agpr, max(0, I_Quit.num_agpr, D_AdvanceDemo.num_agpr, I_Error.num_agpr)
|
||||
; CHECK: .set G_CheckDemoStatus.numbered_sgpr, max(84, I_Quit.numbered_sgpr, D_AdvanceDemo.numbered_sgpr, I_Error.numbered_sgpr)
|
||||
; CHECK: .set G_CheckDemoStatus.private_seg_size, 32+(max(I_Quit.private_seg_size, D_AdvanceDemo.private_seg_size, I_Error.private_seg_size))
|
||||
; CHECK: .set G_CheckDemoStatus.private_seg_size, 32+max(I_Quit.private_seg_size, D_AdvanceDemo.private_seg_size, I_Error.private_seg_size)
|
||||
; CHECK: .set G_CheckDemoStatus.uses_vcc, or(1, I_Quit.uses_vcc, D_AdvanceDemo.uses_vcc, I_Error.uses_vcc)
|
||||
; CHECK: .set G_CheckDemoStatus.uses_flat_scratch, or(0, I_Quit.uses_flat_scratch, D_AdvanceDemo.uses_flat_scratch, I_Error.uses_flat_scratch)
|
||||
; CHECK: .set G_CheckDemoStatus.has_dyn_sized_stack, or(0, I_Quit.has_dyn_sized_stack, D_AdvanceDemo.has_dyn_sized_stack, I_Error.has_dyn_sized_stack)
|
||||
@ -265,7 +265,7 @@ define ptr @P_SaveGameFile() {
|
||||
; CHECK: .set R_FlatNumForName.num_vgpr, max(42, I_Error.num_vgpr)
|
||||
; CHECK: .set R_FlatNumForName.num_agpr, max(0, I_Error.num_agpr)
|
||||
; CHECK: .set R_FlatNumForName.numbered_sgpr, max(56, I_Error.numbered_sgpr)
|
||||
; CHECK: .set R_FlatNumForName.private_seg_size, 16+(max(I_Error.private_seg_size))
|
||||
; CHECK: .set R_FlatNumForName.private_seg_size, 16+max(I_Error.private_seg_size)
|
||||
; CHECK: .set R_FlatNumForName.uses_vcc, or(1, I_Error.uses_vcc)
|
||||
; CHECK: .set R_FlatNumForName.uses_flat_scratch, or(0, I_Error.uses_flat_scratch)
|
||||
; CHECK: .set R_FlatNumForName.has_dyn_sized_stack, or(0, I_Error.has_dyn_sized_stack)
|
||||
@ -280,7 +280,7 @@ define i32 @R_FlatNumForName() {
|
||||
; CHECK: .set R_TextureNumForName.num_vgpr, max(42, R_FlatNumForName.num_vgpr)
|
||||
; CHECK: .set R_TextureNumForName.num_agpr, max(0, R_FlatNumForName.num_agpr)
|
||||
; CHECK: .set R_TextureNumForName.numbered_sgpr, max(56, R_FlatNumForName.numbered_sgpr)
|
||||
; CHECK: .set R_TextureNumForName.private_seg_size, 16+(max(R_FlatNumForName.private_seg_size))
|
||||
; CHECK: .set R_TextureNumForName.private_seg_size, 16+max(R_FlatNumForName.private_seg_size)
|
||||
; CHECK: .set R_TextureNumForName.uses_vcc, or(1, R_FlatNumForName.uses_vcc)
|
||||
; CHECK: .set R_TextureNumForName.uses_flat_scratch, or(0, R_FlatNumForName.uses_flat_scratch)
|
||||
; CHECK: .set R_TextureNumForName.has_dyn_sized_stack, or(0, R_FlatNumForName.has_dyn_sized_stack)
|
||||
@ -295,7 +295,7 @@ define i32 @R_TextureNumForName() {
|
||||
; CHECK: .set G_Ticker.num_vgpr, max(47, G_DoReborn.num_vgpr, F_Ticker.num_vgpr, AM_Stop.num_vgpr, F_StartFinale.num_vgpr, D_AdvanceDemo.num_vgpr, R_FlatNumForName.num_vgpr, R_TextureNumForName.num_vgpr, P_TempSaveGameFile.num_vgpr, P_SaveGameFile.num_vgpr, I_Error.num_vgpr)
|
||||
; CHECK: .set G_Ticker.num_agpr, max(0, G_DoReborn.num_agpr, F_Ticker.num_agpr, AM_Stop.num_agpr, F_StartFinale.num_agpr, D_AdvanceDemo.num_agpr, R_FlatNumForName.num_agpr, R_TextureNumForName.num_agpr, P_TempSaveGameFile.num_agpr, P_SaveGameFile.num_agpr, I_Error.num_agpr)
|
||||
; CHECK: .set G_Ticker.numbered_sgpr, max(105, G_DoReborn.numbered_sgpr, F_Ticker.numbered_sgpr, AM_Stop.numbered_sgpr, F_StartFinale.numbered_sgpr, D_AdvanceDemo.numbered_sgpr, R_FlatNumForName.numbered_sgpr, R_TextureNumForName.numbered_sgpr, P_TempSaveGameFile.numbered_sgpr, P_SaveGameFile.numbered_sgpr, I_Error.numbered_sgpr)
|
||||
; CHECK: .set G_Ticker.private_seg_size, 48+(max(G_DoReborn.private_seg_size, F_Ticker.private_seg_size, AM_Stop.private_seg_size, F_StartFinale.private_seg_size, D_AdvanceDemo.private_seg_size, R_FlatNumForName.private_seg_size, R_TextureNumForName.private_seg_size, P_TempSaveGameFile.private_seg_size, P_SaveGameFile.private_seg_size, I_Error.private_seg_size))
|
||||
; CHECK: .set G_Ticker.private_seg_size, 48+max(G_DoReborn.private_seg_size, F_Ticker.private_seg_size, AM_Stop.private_seg_size, F_StartFinale.private_seg_size, D_AdvanceDemo.private_seg_size, R_FlatNumForName.private_seg_size, R_TextureNumForName.private_seg_size, P_TempSaveGameFile.private_seg_size, P_SaveGameFile.private_seg_size, I_Error.private_seg_size)
|
||||
; CHECK: .set G_Ticker.uses_vcc, or(1, G_DoReborn.uses_vcc, F_Ticker.uses_vcc, AM_Stop.uses_vcc, F_StartFinale.uses_vcc, D_AdvanceDemo.uses_vcc, R_FlatNumForName.uses_vcc, R_TextureNumForName.uses_vcc, P_TempSaveGameFile.uses_vcc, P_SaveGameFile.uses_vcc, I_Error.uses_vcc)
|
||||
; CHECK: .set G_Ticker.uses_flat_scratch, or(0, G_DoReborn.uses_flat_scratch, F_Ticker.uses_flat_scratch, AM_Stop.uses_flat_scratch, F_StartFinale.uses_flat_scratch, D_AdvanceDemo.uses_flat_scratch, R_FlatNumForName.uses_flat_scratch, R_TextureNumForName.uses_flat_scratch, P_TempSaveGameFile.uses_flat_scratch, P_SaveGameFile.uses_flat_scratch, I_Error.uses_flat_scratch)
|
||||
; CHECK: .set G_Ticker.has_dyn_sized_stack, or(0, G_DoReborn.has_dyn_sized_stack, F_Ticker.has_dyn_sized_stack, AM_Stop.has_dyn_sized_stack, F_StartFinale.has_dyn_sized_stack, D_AdvanceDemo.has_dyn_sized_stack, R_FlatNumForName.has_dyn_sized_stack, R_TextureNumForName.has_dyn_sized_stack, P_TempSaveGameFile.has_dyn_sized_stack, P_SaveGameFile.has_dyn_sized_stack, I_Error.has_dyn_sized_stack)
|
||||
@ -319,7 +319,7 @@ define void @G_Ticker() {
|
||||
; CHECK: .set RunTic.num_vgpr, max(47, G_CheckDemoStatus.num_vgpr, D_AdvanceDemo.num_vgpr, G_Ticker.num_vgpr)
|
||||
; CHECK: .set RunTic.num_agpr, max(0, G_CheckDemoStatus.num_agpr, D_AdvanceDemo.num_agpr, G_Ticker.num_agpr)
|
||||
; CHECK: .set RunTic.numbered_sgpr, max(105, G_CheckDemoStatus.numbered_sgpr, D_AdvanceDemo.numbered_sgpr, G_Ticker.numbered_sgpr)
|
||||
; CHECK: .set RunTic.private_seg_size, 32+(max(G_CheckDemoStatus.private_seg_size, D_AdvanceDemo.private_seg_size, G_Ticker.private_seg_size))
|
||||
; CHECK: .set RunTic.private_seg_size, 32+max(G_CheckDemoStatus.private_seg_size, D_AdvanceDemo.private_seg_size, G_Ticker.private_seg_size)
|
||||
; CHECK: .set RunTic.uses_vcc, or(1, G_CheckDemoStatus.uses_vcc, D_AdvanceDemo.uses_vcc, G_Ticker.uses_vcc)
|
||||
; CHECK: .set RunTic.uses_flat_scratch, or(0, G_CheckDemoStatus.uses_flat_scratch, D_AdvanceDemo.uses_flat_scratch, G_Ticker.uses_flat_scratch)
|
||||
; CHECK: .set RunTic.has_dyn_sized_stack, or(0, G_CheckDemoStatus.has_dyn_sized_stack, D_AdvanceDemo.has_dyn_sized_stack, G_Ticker.has_dyn_sized_stack)
|
||||
|
@ -20,7 +20,7 @@ entry:
|
||||
; CHECK: .set baz.num_vgpr, max(49, qux.num_vgpr)
|
||||
; CHECK: .set baz.num_agpr, max(0, qux.num_agpr)
|
||||
; CHECK: .set baz.numbered_sgpr, max(34, qux.numbered_sgpr)
|
||||
; CHECK: .set baz.private_seg_size, 16+(max(qux.private_seg_size))
|
||||
; CHECK: .set baz.private_seg_size, 16+max(qux.private_seg_size)
|
||||
; CHECK: .set baz.uses_vcc, or(0, qux.uses_vcc)
|
||||
; CHECK: .set baz.uses_flat_scratch, or(0, qux.uses_flat_scratch)
|
||||
; CHECK: .set baz.has_dyn_sized_stack, or(0, qux.has_dyn_sized_stack)
|
||||
@ -37,7 +37,7 @@ entry:
|
||||
; CHECK: .set bar.num_vgpr, max(65, baz.num_vgpr, qux.num_vgpr)
|
||||
; CHECK: .set bar.num_agpr, max(0, baz.num_agpr, qux.num_agpr)
|
||||
; CHECK: .set bar.numbered_sgpr, max(34, baz.numbered_sgpr, qux.numbered_sgpr)
|
||||
; CHECK: .set bar.private_seg_size, 16+(max(baz.private_seg_size, qux.private_seg_size))
|
||||
; CHECK: .set bar.private_seg_size, 16+max(baz.private_seg_size, qux.private_seg_size)
|
||||
; CHECK: .set bar.uses_vcc, or(0, baz.uses_vcc, qux.uses_vcc)
|
||||
; CHECK: .set bar.uses_flat_scratch, or(0, baz.uses_flat_scratch, qux.uses_flat_scratch)
|
||||
; CHECK: .set bar.has_dyn_sized_stack, or(0, baz.has_dyn_sized_stack, qux.has_dyn_sized_stack)
|
||||
@ -56,7 +56,7 @@ entry:
|
||||
; CHECK: .set foo.num_vgpr, max(38, bar.num_vgpr)
|
||||
; CHECK: .set foo.num_agpr, max(0, bar.num_agpr)
|
||||
; CHECK: .set foo.numbered_sgpr, max(34, bar.numbered_sgpr)
|
||||
; CHECK: .set foo.private_seg_size, 16+(max(bar.private_seg_size))
|
||||
; CHECK: .set foo.private_seg_size, 16+max(bar.private_seg_size)
|
||||
; CHECK: .set foo.uses_vcc, or(0, bar.uses_vcc)
|
||||
; CHECK: .set foo.uses_flat_scratch, or(0, bar.uses_flat_scratch)
|
||||
; CHECK: .set foo.has_dyn_sized_stack, or(0, bar.has_dyn_sized_stack)
|
||||
@ -73,7 +73,7 @@ entry:
|
||||
; CHECK: .set usefoo.num_vgpr, max(32, foo.num_vgpr)
|
||||
; CHECK: .set usefoo.num_agpr, max(0, foo.num_agpr)
|
||||
; CHECK: .set usefoo.numbered_sgpr, max(33, foo.numbered_sgpr)
|
||||
; CHECK: .set usefoo.private_seg_size, 0+(max(foo.private_seg_size))
|
||||
; CHECK: .set usefoo.private_seg_size, 0+max(foo.private_seg_size)
|
||||
; CHECK: .set usefoo.uses_vcc, or(0, foo.uses_vcc)
|
||||
; CHECK: .set usefoo.uses_flat_scratch, or(1, foo.uses_flat_scratch)
|
||||
; CHECK: .set usefoo.has_dyn_sized_stack, or(0, foo.has_dyn_sized_stack)
|
||||
|
@ -3,7 +3,7 @@
|
||||
; RUN: sed 's/CODE_OBJECT_VERSION/600/g' %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs | FileCheck -check-prefixes=V5 %s
|
||||
|
||||
; CHECK-LABEL: {{^}}recursive:
|
||||
; CHECK: .set recursive.private_seg_size, 16+(max(16384))
|
||||
; CHECK: .set recursive.private_seg_size, 16+max(16384)
|
||||
; CHECK: ScratchSize: 16
|
||||
|
||||
; V5-LABEL: {{^}}recursive:
|
||||
@ -22,7 +22,7 @@ define void @tail_recursive() {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: .set calls_tail_recursive.private_seg_size, 0+(max(tail_recursive.private_seg_size))
|
||||
; CHECK: .set calls_tail_recursive.private_seg_size, 0+max(tail_recursive.private_seg_size)
|
||||
define void @calls_tail_recursive() norecurse {
|
||||
tail call void @tail_recursive()
|
||||
ret void
|
||||
@ -41,10 +41,10 @@ define void @tail_recursive_with_stack() {
|
||||
; For an arbitrary recursive call, report a large number for unknown stack
|
||||
; usage for code object v4 and older
|
||||
; CHECK-LABEL: {{^}}calls_recursive:
|
||||
; CHECK: .set calls_recursive.private_seg_size, 0+(max(16384, recursive.private_seg_size))
|
||||
; CHECK: .set calls_recursive.private_seg_size, 0+max(16384, recursive.private_seg_size)
|
||||
;
|
||||
; V5-LABEL: {{^}}calls_recursive:
|
||||
; V5: .set calls_recursive.private_seg_size, 0+(max(recursive.private_seg_size))
|
||||
; V5: .set calls_recursive.private_seg_size, 0+max(recursive.private_seg_size)
|
||||
; V5: .set calls_recursive.has_dyn_sized_stack, or(0, recursive.has_dyn_sized_stack)
|
||||
define amdgpu_kernel void @calls_recursive() {
|
||||
call void @recursive()
|
||||
@ -54,7 +54,7 @@ define amdgpu_kernel void @calls_recursive() {
|
||||
; Make sure we do not report a huge stack size for tail recursive
|
||||
; functions
|
||||
; CHECK-LABEL: {{^}}kernel_indirectly_calls_tail_recursive:
|
||||
; CHECK: .set kernel_indirectly_calls_tail_recursive.private_seg_size, 0+(max(calls_tail_recursive.private_seg_size))
|
||||
; CHECK: .set kernel_indirectly_calls_tail_recursive.private_seg_size, 0+max(calls_tail_recursive.private_seg_size)
|
||||
define amdgpu_kernel void @kernel_indirectly_calls_tail_recursive() {
|
||||
call void @calls_tail_recursive()
|
||||
ret void
|
||||
@ -65,10 +65,10 @@ define amdgpu_kernel void @kernel_indirectly_calls_tail_recursive() {
|
||||
; in the kernel.
|
||||
|
||||
; CHECK-LABEL: {{^}}kernel_calls_tail_recursive:
|
||||
; CHECK: .set kernel_calls_tail_recursive.private_seg_size, 0+(max(16384, tail_recursive.private_seg_size))
|
||||
; CHECK: .set kernel_calls_tail_recursive.private_seg_size, 0+max(16384, tail_recursive.private_seg_size)
|
||||
;
|
||||
; V5-LABEL: {{^}}kernel_calls_tail_recursive:
|
||||
; V5: .set kernel_calls_tail_recursive.private_seg_size, 0+(max(tail_recursive.private_seg_size))
|
||||
; V5: .set kernel_calls_tail_recursive.private_seg_size, 0+max(tail_recursive.private_seg_size)
|
||||
; V5: .set kernel_calls_tail_recursive.has_recursion, or(1, tail_recursive.has_recursion)
|
||||
define amdgpu_kernel void @kernel_calls_tail_recursive() {
|
||||
call void @tail_recursive()
|
||||
@ -76,10 +76,10 @@ define amdgpu_kernel void @kernel_calls_tail_recursive() {
|
||||
}
|
||||
|
||||
; CHECK-LABEL: {{^}}kernel_calls_tail_recursive_with_stack:
|
||||
; CHECK: .set kernel_calls_tail_recursive_with_stack.private_seg_size, 0+(max(16384, tail_recursive_with_stack.private_seg_size))
|
||||
; CHECK: .set kernel_calls_tail_recursive_with_stack.private_seg_size, 0+max(16384, tail_recursive_with_stack.private_seg_size)
|
||||
;
|
||||
; V5-LABEL: {{^}}kernel_calls_tail_recursive_with_stack:
|
||||
; V5: .set kernel_calls_tail_recursive_with_stack.private_seg_size, 0+(max(tail_recursive_with_stack.private_seg_size))
|
||||
; V5: .set kernel_calls_tail_recursive_with_stack.private_seg_size, 0+max(tail_recursive_with_stack.private_seg_size)
|
||||
; V5: .set kernel_calls_tail_recursive_with_stack.has_dyn_sized_stack, or(0, tail_recursive_with_stack.has_dyn_sized_stack)
|
||||
define amdgpu_kernel void @kernel_calls_tail_recursive_with_stack() {
|
||||
call void @tail_recursive_with_stack()
|
||||
|
@ -15,7 +15,7 @@
|
||||
; CHECK: .set baz.num_vgpr, max(61, qux.num_vgpr)
|
||||
; CHECK: .set baz.num_agpr, max(0, qux.num_agpr)
|
||||
; CHECK: .set baz.numbered_sgpr, max(51, qux.numbered_sgpr)
|
||||
; CHECK: .set baz.private_seg_size, 16+(max(qux.private_seg_size))
|
||||
; CHECK: .set baz.private_seg_size, 16+max(qux.private_seg_size)
|
||||
; CHECK: .set baz.uses_vcc, or(1, qux.uses_vcc)
|
||||
; CHECK: .set baz.uses_flat_scratch, or(0, qux.uses_flat_scratch)
|
||||
; CHECK: .set baz.has_dyn_sized_stack, or(0, qux.has_dyn_sized_stack)
|
||||
@ -26,7 +26,7 @@
|
||||
; CHECK: .set bar.num_vgpr, max(51, baz.num_vgpr)
|
||||
; CHECK: .set bar.num_agpr, max(0, baz.num_agpr)
|
||||
; CHECK: .set bar.numbered_sgpr, max(61, baz.numbered_sgpr)
|
||||
; CHECK: .set bar.private_seg_size, 16+(max(baz.private_seg_size))
|
||||
; CHECK: .set bar.private_seg_size, 16+max(baz.private_seg_size)
|
||||
; CHECK: .set bar.uses_vcc, or(1, baz.uses_vcc)
|
||||
; CHECK: .set bar.uses_flat_scratch, or(0, baz.uses_flat_scratch)
|
||||
; CHECK: .set bar.has_dyn_sized_stack, or(0, baz.has_dyn_sized_stack)
|
||||
@ -80,7 +80,7 @@ entry:
|
||||
; CHECK: .set usefoo.num_vgpr, max(32, foo.num_vgpr)
|
||||
; CHECK: .set usefoo.num_agpr, max(0, foo.num_agpr)
|
||||
; CHECK: .set usefoo.numbered_sgpr, max(33, foo.numbered_sgpr)
|
||||
; CHECK: .set usefoo.private_seg_size, 0+(max(foo.private_seg_size))
|
||||
; CHECK: .set usefoo.private_seg_size, 0+max(foo.private_seg_size)
|
||||
; CHECK: .set usefoo.uses_vcc, or(1, foo.uses_vcc)
|
||||
; CHECK: .set usefoo.uses_flat_scratch, or(1, foo.uses_flat_scratch)
|
||||
; CHECK: .set usefoo.has_dyn_sized_stack, or(0, foo.has_dyn_sized_stack)
|
||||
|
@ -146,7 +146,7 @@ define void @empty_func() !dbg !8 {
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: AGPRs: test_indirect_call.num_agpr
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: ScratchSize [bytes/lane]: 0
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: Dynamic Stack: True
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: Occupancy [waves/SIMD]: occupancy(10, 4, 256, 8, 10, max(test_indirect_call.numbered_sgpr+(extrasgprs(test_indirect_call.uses_vcc, test_indirect_call.uses_flat_scratch, 1)), 1, 0), max(totalnumvgprs(test_indirect_call.num_agpr, test_indirect_call.num_vgpr), 1, 0))
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: Occupancy [waves/SIMD]: occupancy(10, 4, 256, 8, 10, max(test_indirect_call.numbered_sgpr+extrasgprs(test_indirect_call.uses_vcc, test_indirect_call.uses_flat_scratch, 1), 1, 0), max(totalnumvgprs(test_indirect_call.num_agpr, test_indirect_call.num_vgpr), 1, 0))
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: SGPRs Spill: 0
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: VGPRs Spill: 0
|
||||
; STDERR-NEXT: remark: foo.cl:64:0: LDS Size [bytes/block]: 0
|
||||
@ -164,7 +164,7 @@ define amdgpu_kernel void @test_indirect_call() !dbg !9 {
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: AGPRs: test_indirect_w_static_stack.num_agpr
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: ScratchSize [bytes/lane]: 144
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: Dynamic Stack: True
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: Occupancy [waves/SIMD]: occupancy(10, 4, 256, 8, 10, max(test_indirect_w_static_stack.numbered_sgpr+(extrasgprs(test_indirect_w_static_stack.uses_vcc, test_indirect_w_static_stack.uses_flat_scratch, 1)), 1, 0), max(totalnumvgprs(test_indirect_w_static_stack.num_agpr, test_indirect_w_static_stack.num_vgpr), 1, 0))
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: Occupancy [waves/SIMD]: occupancy(10, 4, 256, 8, 10, max(test_indirect_w_static_stack.numbered_sgpr+extrasgprs(test_indirect_w_static_stack.uses_vcc, test_indirect_w_static_stack.uses_flat_scratch, 1), 1, 0), max(totalnumvgprs(test_indirect_w_static_stack.num_agpr, test_indirect_w_static_stack.num_vgpr), 1, 0))
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: SGPRs Spill: 0
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: VGPRs Spill: 0
|
||||
; STDERR-NEXT: remark: foo.cl:74:0: LDS Size [bytes/block]: 0
|
||||
|
@ -19,7 +19,7 @@ entry:
|
||||
; CHECK: .set __unnamed_2.num_vgpr, max(32, __unnamed_1.num_vgpr)
|
||||
; CHECK: .set __unnamed_2.num_agpr, max(0, __unnamed_1.num_agpr)
|
||||
; CHECK: .set __unnamed_2.numbered_sgpr, max(34, __unnamed_1.numbered_sgpr)
|
||||
; CHECK: .set __unnamed_2.private_seg_size, 16+(max(__unnamed_1.private_seg_size))
|
||||
; CHECK: .set __unnamed_2.private_seg_size, 16+max(__unnamed_1.private_seg_size)
|
||||
; CHECK: .set __unnamed_2.uses_vcc, or(0, __unnamed_1.uses_vcc)
|
||||
; CHECK: .set __unnamed_2.uses_flat_scratch, or(0, __unnamed_1.uses_flat_scratch)
|
||||
; CHECK: .set __unnamed_2.has_dyn_sized_stack, or(0, __unnamed_1.has_dyn_sized_stack)
|
||||
@ -35,7 +35,7 @@ entry:
|
||||
; CHECK: .set use.num_vgpr, max(32, __unnamed_1.num_vgpr, __unnamed_2.num_vgpr)
|
||||
; CHECK: .set use.num_agpr, max(0, __unnamed_1.num_agpr, __unnamed_2.num_agpr)
|
||||
; CHECK: .set use.numbered_sgpr, max(33, __unnamed_1.numbered_sgpr, __unnamed_2.numbered_sgpr)
|
||||
; CHECK: .set use.private_seg_size, 0+(max(__unnamed_1.private_seg_size, __unnamed_2.private_seg_size))
|
||||
; CHECK: .set use.private_seg_size, 0+max(__unnamed_1.private_seg_size, __unnamed_2.private_seg_size)
|
||||
; CHECK: .set use.uses_vcc, or(0, __unnamed_1.uses_vcc, __unnamed_2.uses_vcc)
|
||||
; CHECK: .set use.uses_flat_scratch, or(1, __unnamed_1.uses_flat_scratch, __unnamed_2.uses_flat_scratch)
|
||||
; CHECK: .set use.has_dyn_sized_stack, or(0, __unnamed_1.has_dyn_sized_stack, __unnamed_2.has_dyn_sized_stack)
|
||||
|
@ -41,7 +41,7 @@ define i32 @test_external_global() {
|
||||
; CHECK-NEXT: bx lr
|
||||
; ELF: [[LABEL]]:
|
||||
; ELF: [[TMPLABEL:.L[[:alnum:]_]+]]:
|
||||
; ELF: .long external_global(GOT_PREL)-(([[ANCHOR]]+8)-[[TMPLABEL]])
|
||||
; ELF: .long external_global(GOT_PREL)-([[ANCHOR]]+8-[[TMPLABEL]])
|
||||
; DARWIN-NOMOVT: [[LABEL]]:
|
||||
; DARWIN-NOMOVT: .long L_external_global$non_lazy_ptr-([[ANCHOR]]+8)
|
||||
; DARWIN-NOMOVT-NOT: .long L_external_global
|
||||
@ -88,7 +88,7 @@ define i32 @test_external_constant() {
|
||||
; CHECK-NEXT: bx lr
|
||||
; ELF: [[LABEL]]:
|
||||
; ELF: [[TMPLABEL:.L[[:alnum:]_]+]]:
|
||||
; ELF: .long external_constant(GOT_PREL)-(([[ANCHOR]]+8)-[[TMPLABEL]])
|
||||
; ELF: .long external_constant(GOT_PREL)-([[ANCHOR]]+8-[[TMPLABEL]])
|
||||
; DARWIN-NOMOVT: [[LABEL]]:
|
||||
; DARWIN-NOMOVT: .long L_external_constant$non_lazy_ptr-([[ANCHOR]]+8)
|
||||
; DARWIN-NOMOVT-NOT: .long L_external_constant
|
||||
|
@ -41,7 +41,7 @@ define i32 @test_external_global() {
|
||||
; CHECK-NEXT: bx lr
|
||||
; ELF: [[LABEL]]:
|
||||
; ELF: [[TMPLABEL:.L[[:alnum:]_]+]]:
|
||||
; ELF: .long external_global(GOT_PREL)-(([[ANCHOR]]+4)-[[TMPLABEL]])
|
||||
; ELF: .long external_global(GOT_PREL)-([[ANCHOR]]+4-[[TMPLABEL]])
|
||||
; DARWIN-NOMOVT: [[LABEL]]:
|
||||
; DARWIN-NOMOVT: .long L_external_global$non_lazy_ptr-([[ANCHOR]]+4)
|
||||
; DARWIN-NOMOVT-NOT: .long L_external_global
|
||||
@ -88,7 +88,7 @@ define i32 @test_external_constant() {
|
||||
; CHECK-NEXT: bx lr
|
||||
; ELF: [[LABEL]]:
|
||||
; ELF: [[TMPLABEL:.L[[:alnum:]_]+]]:
|
||||
; ELF: .long external_constant(GOT_PREL)-(([[ANCHOR]]+4)-[[TMPLABEL]])
|
||||
; ELF: .long external_constant(GOT_PREL)-([[ANCHOR]]+4-[[TMPLABEL]])
|
||||
; DARWIN-NOMOVT: [[LABEL]]:
|
||||
; DARWIN-NOMOVT: .long L_external_constant$non_lazy_ptr-([[ANCHOR]]+4)
|
||||
; DARWIN-NOMOVT-NOT: .long L_external_constant
|
||||
|
@ -22,7 +22,7 @@ define ptr @get_preemptable_var() nounwind {
|
||||
; PIC-NEXT: @ %bb.1:
|
||||
; PIC-NEXT: .LCPI0_0:
|
||||
; PIC-NEXT: .Ltmp0:
|
||||
; PIC-NEXT: .long preemptable_var(GOT_PREL)-((.LPC0_0+8)-.Ltmp0)
|
||||
; PIC-NEXT: .long preemptable_var(GOT_PREL)-(.LPC0_0+8-.Ltmp0)
|
||||
ret ptr @preemptable_var
|
||||
}
|
||||
|
||||
@ -127,7 +127,7 @@ define dso_preemptable ptr @preemptable_func() nounwind {
|
||||
; PIC-NEXT: @ %bb.1:
|
||||
; PIC-NEXT: .LCPI5_0:
|
||||
; PIC-NEXT: .Ltmp1:
|
||||
; PIC-NEXT: .long preemptable_func(GOT_PREL)-((.LPC5_0+8)-.Ltmp1)
|
||||
; PIC-NEXT: .long preemptable_func(GOT_PREL)-(.LPC5_0+8-.Ltmp1)
|
||||
ret ptr @preemptable_func
|
||||
}
|
||||
|
||||
|
@ -69,4 +69,4 @@ define i32 @test1() {
|
||||
; LinuxPIC: .p2align 2
|
||||
; LinuxPIC: .LCPI0_0:
|
||||
; LinuxPIC: .Ltmp0:
|
||||
; LinuxPIC: .long G(GOT_PREL)-((.LPC0_0+8)-.Ltmp0)
|
||||
; LinuxPIC: .long G(GOT_PREL)-(.LPC0_0+8-.Ltmp0)
|
||||
|
@ -15,11 +15,11 @@ define void @func(i32 %n) {
|
||||
|
||||
; CHECK: [[CP1]]:
|
||||
; CHECK-NEXT: [[CP1_TMP:.Ltmp[0-9]+]]:
|
||||
; CHECK-NEXT: .long var(TLSGD)-(([[PCPOS1]]+4)-[[CP1_TMP]])
|
||||
; CHECK-NEXT: .long var(TLSGD)-([[PCPOS1]]+4-[[CP1_TMP]])
|
||||
|
||||
; CHECK: [[CP2]]:
|
||||
; CHECK-NEXT: [[CP2_TMP:.Ltmp[0-9]+]]:
|
||||
; CHECK-NEXT: .long var(TLSGD)-(([[PCPOS2]]+4)-[[CP2_TMP]])
|
||||
; CHECK-NEXT: .long var(TLSGD)-([[PCPOS2]]+4-[[CP2_TMP]])
|
||||
|
||||
entry:
|
||||
br label %loop
|
||||
|
@ -43,7 +43,7 @@ define i32 @test1() {
|
||||
; LINUX: ldr r0, .LCPI0_0
|
||||
; LINUX: ldr r0, [pc, r0]
|
||||
; LINUX: ldr r0, [r0]
|
||||
; LINUX: .long G(GOT_PREL)-((.LPC0_0+8)-.Ltmp0)
|
||||
; LINUX: .long G(GOT_PREL)-(.LPC0_0+8-.Ltmp0)
|
||||
|
||||
; LINUX_T: ldr r0, .LCPI0_0
|
||||
; LINUX_T: add r0, pc
|
||||
|
@ -28,7 +28,7 @@ define signext i8 @foo() {
|
||||
; LINUX-PIC-NEXT: @ %bb.3:
|
||||
; LINUX-PIC-NEXT: .LCPI0_0:
|
||||
; LINUX-PIC-NEXT: .Ltmp0:
|
||||
; LINUX-PIC-NEXT: .long x(GOT_PREL)-((.LPC0_0+8)-.Ltmp0)
|
||||
; LINUX-PIC-NEXT: .long x(GOT_PREL)-(.LPC0_0+8-.Ltmp0)
|
||||
entry:
|
||||
%0 = load i8, ptr @x
|
||||
%tobool = icmp eq i8 %0, 0
|
||||
|
@ -11,6 +11,6 @@ declare void @fn2() unnamed_addr
|
||||
declare void @fn3()
|
||||
|
||||
; CHECK: .long 0
|
||||
; CHECK-NEXT: .long (fn1(prel31)-vtable)-4
|
||||
; CHECK-NEXT: .long (fn2(prel31)-vtable)-4
|
||||
; CHECK-NEXT: .long (fn3-vtable)-4
|
||||
; CHECK-NEXT: .long fn1(prel31)-vtable-4
|
||||
; CHECK-NEXT: .long fn2(prel31)-vtable-4
|
||||
; CHECK-NEXT: .long fn3-vtable-4
|
||||
|
@ -43,10 +43,10 @@ define i32 @test1() #0 {
|
||||
; CHECK-NEXT: @ %bb.2:
|
||||
; CHECK-NEXT: .LCPI0_0:
|
||||
; CHECK-NEXT: .Ltmp0:
|
||||
; CHECK-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+8)-.Ltmp0)
|
||||
; CHECK-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_0+8-.Ltmp0)
|
||||
; CHECK-NEXT: .LCPI0_1:
|
||||
; CHECK-NEXT: .Ltmp1:
|
||||
; CHECK-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+8)-.Ltmp1)
|
||||
; CHECK-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_1+8-.Ltmp1)
|
||||
;
|
||||
; THUMB1-LABEL: test1:
|
||||
; THUMB1: @ %bb.0:
|
||||
@ -88,10 +88,10 @@ define i32 @test1() #0 {
|
||||
; THUMB1-NEXT: @ %bb.3:
|
||||
; THUMB1-NEXT: .LCPI0_0:
|
||||
; THUMB1-NEXT: .Ltmp0:
|
||||
; THUMB1-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+4)-.Ltmp0)
|
||||
; THUMB1-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_0+4-.Ltmp0)
|
||||
; THUMB1-NEXT: .LCPI0_1:
|
||||
; THUMB1-NEXT: .Ltmp1:
|
||||
; THUMB1-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+4)-.Ltmp1)
|
||||
; THUMB1-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_1+4-.Ltmp1)
|
||||
;
|
||||
; THUMB1-PIC-LABEL: test1:
|
||||
; THUMB1-PIC: @ %bb.0:
|
||||
@ -133,10 +133,10 @@ define i32 @test1() #0 {
|
||||
; THUMB1-PIC-NEXT: @ %bb.3:
|
||||
; THUMB1-PIC-NEXT: .LCPI0_0:
|
||||
; THUMB1-PIC-NEXT: .Ltmp0:
|
||||
; THUMB1-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+4)-.Ltmp0)
|
||||
; THUMB1-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_0+4-.Ltmp0)
|
||||
; THUMB1-PIC-NEXT: .LCPI0_1:
|
||||
; THUMB1-PIC-NEXT: .Ltmp1:
|
||||
; THUMB1-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+4)-.Ltmp1)
|
||||
; THUMB1-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_1+4-.Ltmp1)
|
||||
;
|
||||
; THUMB2-LABEL: test1:
|
||||
; THUMB2: @ %bb.0:
|
||||
@ -169,10 +169,10 @@ define i32 @test1() #0 {
|
||||
; THUMB2-NEXT: @ %bb.2:
|
||||
; THUMB2-NEXT: .LCPI0_0:
|
||||
; THUMB2-NEXT: .Ltmp0:
|
||||
; THUMB2-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+4)-.Ltmp0)
|
||||
; THUMB2-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_0+4-.Ltmp0)
|
||||
; THUMB2-NEXT: .LCPI0_1:
|
||||
; THUMB2-NEXT: .Ltmp1:
|
||||
; THUMB2-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+4)-.Ltmp1)
|
||||
; THUMB2-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_1+4-.Ltmp1)
|
||||
;
|
||||
; THUMB2-PIC-LABEL: test1:
|
||||
; THUMB2-PIC: @ %bb.0:
|
||||
@ -205,10 +205,10 @@ define i32 @test1() #0 {
|
||||
; THUMB2-PIC-NEXT: @ %bb.2:
|
||||
; THUMB2-PIC-NEXT: .LCPI0_0:
|
||||
; THUMB2-PIC-NEXT: .Ltmp0:
|
||||
; THUMB2-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+4)-.Ltmp0)
|
||||
; THUMB2-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_0+4-.Ltmp0)
|
||||
; THUMB2-PIC-NEXT: .LCPI0_1:
|
||||
; THUMB2-PIC-NEXT: .Ltmp1:
|
||||
; THUMB2-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+4)-.Ltmp1)
|
||||
; THUMB2-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_1+4-.Ltmp1)
|
||||
%a1 = alloca [256 x i32], align 4
|
||||
call void @foo(ptr %a1) #3
|
||||
ret i32 0
|
||||
|
@ -16,7 +16,7 @@
|
||||
; PIC: ldr {{r[0-9]+}}, .LCPI0_0
|
||||
; PIC: .LCPI0_0:
|
||||
; PIC-NEXT: .Ltmp0:
|
||||
; PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+8)-.Ltmp0)
|
||||
; PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-(.LPC0_0+8-.Ltmp0)
|
||||
|
||||
define dso_local i32 @foo(i32 %t) nounwind sspstrong {
|
||||
entry:
|
||||
|
@ -45,12 +45,12 @@ define signext i32 @test1() {
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, ElementIntTLSv1[TL]@ld(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 2
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, ElementIntTLSv1[TL]@ld+24(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, (ElementIntTLS2[TL]@ld+320)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, ElementIntTLS4[TL]@ld+328-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, ElementIntTLS2[TL]@ld+320-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 3
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, (ElementIntTLS3[TL]@ld+324)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, ElementIntTLS3[TL]@ld+324-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 88
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, (ElementIntTLS5[TL]@ld+332)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, ElementIntTLS5[TL]@ld+332-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 102
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: addi r1, r1, 48
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r0, 16(r1)
|
||||
@ -70,12 +70,12 @@ define signext i32 @test1() {
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, ElementIntTLSv1[TL]@ld(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 2
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, ElementIntTLSv1[TL]@ld+24(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, (ElementIntTLS2[TL]@ld+320)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, ElementIntTLS4[TL]@ld+328-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, ElementIntTLS2[TL]@ld+320-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 3
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, (ElementIntTLS3[TL]@ld+324)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, ElementIntTLS3[TL]@ld+324-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 88
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, (ElementIntTLS5[TL]@ld+332)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, ElementIntTLS5[TL]@ld+332-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 102
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addi r1, r1, 48
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r0, 16(r1)
|
||||
@ -124,7 +124,7 @@ define i64 @test2() {
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mr r6, r3
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 212
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 203
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, (ElementLongTLS2[TL]@ld+1200)-131072(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, ElementLongTLS2[TL]@ld+1200-131072(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r4, L..C1(r2) # target-flags(ppc-tlsgd) @MyTLSGDVar
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, ElementLongTLS6[UL]@ld+424(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r3, L..C2(r2) # target-flags(ppc-tlsgdm) @MyTLSGDVar
|
||||
@ -133,10 +133,10 @@ define i64 @test2() {
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, 440(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 6
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 100
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, (ElementLongTLS3[TL]@ld+2000)-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, ElementLongTLS3[TL]@ld+2000-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 882
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, (ElementLongTLS4[TL]@ld+6800)-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, (ElementLongTLS5[TL]@ld+8400)-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, ElementLongTLS4[TL]@ld+6800-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, ElementLongTLS5[TL]@ld+8400-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 1191
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: addi r1, r1, 48
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r0, 16(r1)
|
||||
@ -157,7 +157,7 @@ define i64 @test2() {
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r4, L..C1@l(r4)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, ElementLongTLS6[UL]@ld+424(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 203
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, (ElementLongTLS2[TL]@ld+1200)-131072(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, ElementLongTLS2[TL]@ld+1200-131072(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addis r3, L..C2@u(r2)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r3, L..C2@l(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: bla .__tls_get_addr[PR]
|
||||
@ -165,10 +165,10 @@ define i64 @test2() {
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r4, 440(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 6
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 100
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, (ElementLongTLS3[TL]@ld+2000)-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, ElementLongTLS3[TL]@ld+2000-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 882
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r4, (ElementLongTLS4[TL]@ld+6800)-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, (ElementLongTLS5[TL]@ld+8400)-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r4, ElementLongTLS4[TL]@ld+6800-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, ElementLongTLS5[TL]@ld+8400-196608(r6)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 1191
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addi r1, r1, 48
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r0, 16(r1)
|
||||
@ -214,13 +214,13 @@ define signext i32 @test3() {
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: bla .__tls_get_mod[PR]
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r5, 2
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 1
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r6, (ElementIntTLS3[TL]@ld+324)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r6, ElementIntTLS3[TL]@ld+324-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r6, L..C3(r2) # target-flags(ppc-tlsld) @ElementIntTLSv2
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS2[TL]@ld+320)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, ElementIntTLS2[TL]@ld+320-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r5, 88
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS5[TL]@ld+332)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, ElementIntTLS5[TL]@ld+332-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r5, 4
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, ElementIntTLS4[TL]@ld+328-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stwux r4, r3, r6
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, 24(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 102
|
||||
@ -241,13 +241,13 @@ define signext i32 @test3() {
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: bla .__tls_get_mod[PR]
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 2
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 1
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS2[TL]@ld+320)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, ElementIntTLS2[TL]@ld+320-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 3
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS3[TL]@ld+324)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, ElementIntTLS3[TL]@ld+324-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 88
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS5[TL]@ld+332)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, ElementIntTLS5[TL]@ld+332-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 4
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, ElementIntTLS4[TL]@ld+328-65536(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stwux r4, r3, r6
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, 24(r3)
|
||||
; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 102
|
||||
|
@ -30,12 +30,12 @@ define signext i32 @StoreArrays1() {
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, mySmallLocalExecTLSv1[TL]@le(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 2
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, mySmallLocalExecTLSv1[TL]@le+24(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, (mySmallLocalExecTLS4[TL]@le+328)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, (mySmallLocalExecTLS2[TL]@le+320)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, mySmallLocalExecTLS4[TL]@le+328-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, mySmallLocalExecTLS2[TL]@le+320-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 3
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, (mySmallLocalExecTLS3[TL]@le+324)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, mySmallLocalExecTLS3[TL]@le+324-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 88
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, (mySmallLocalExecTLS5[TL]@le+332)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, mySmallLocalExecTLS5[TL]@le+332-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 102
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: blr
|
||||
;
|
||||
@ -46,12 +46,12 @@ define signext i32 @StoreArrays1() {
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, mySmallLocalExecTLSv1[TL]@le(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 2
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, mySmallLocalExecTLSv1[TL]@le+24(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, (mySmallLocalExecTLS4[TL]@le+328)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, (mySmallLocalExecTLS2[TL]@le+320)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, mySmallLocalExecTLS4[TL]@le+328-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, mySmallLocalExecTLS2[TL]@le+320-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 3
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, (mySmallLocalExecTLS3[TL]@le+324)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, mySmallLocalExecTLS3[TL]@le+324-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 88
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, (mySmallLocalExecTLS5[TL]@le+332)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, mySmallLocalExecTLS5[TL]@le+332-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 102
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: blr
|
||||
entry:
|
||||
@ -90,36 +90,36 @@ define signext i32 @StoreArrays2() {
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64: # %bb.0: # %entry
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r4, 2
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 1
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, (mySmallLocalExecTLS2[TL]@le+320)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, mySmallLocalExecTLS2[TL]@le+320-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r4, 3
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, (mySmallLocalExecTLS3[TL]@le+324)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, mySmallLocalExecTLS3[TL]@le+324-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: ld r4, L..C0(r2) # target-flags(ppc-tprel) @mySmallLocalExecTLSv2
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: add r4, r13, r4
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, 0(r4)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 4
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, 24(r4)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r4, 88
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, (mySmallLocalExecTLS4[TL]@le+328)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r3, mySmallLocalExecTLS4[TL]@le+328-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 102
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, (mySmallLocalExecTLS5[TL]@le+332)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: stw r4, mySmallLocalExecTLS5[TL]@le+332-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: blr
|
||||
;
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-LABEL: StoreArrays2:
|
||||
; SMALL-LOCAL-EXEC-LARGECM64: # %bb.0: # %entry
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 2
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r4, 3
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, (mySmallLocalExecTLS2[TL]@le+320)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, mySmallLocalExecTLS2[TL]@le+320-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: addis r3, L..C0@u(r2)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: ld r3, L..C0@l(r3)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, (mySmallLocalExecTLS3[TL]@le+324)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, mySmallLocalExecTLS3[TL]@le+324-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r4, 1
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: add r3, r13, r3
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, 0(r3)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r4, 4
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, 24(r3)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 88
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, (mySmallLocalExecTLS4[TL]@le+328)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, (mySmallLocalExecTLS5[TL]@le+332)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r4, mySmallLocalExecTLS4[TL]@le+328-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: stw r3, mySmallLocalExecTLS5[TL]@le+332-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 102
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: blr
|
||||
entry:
|
||||
|
@ -42,8 +42,8 @@ define i64 @StoreLargeAccess1() {
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r4, 100
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: std r3, mySmallLocalExecTLS3[TL]@le+2000(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 882
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: std r4, (mySmallLocalExecTLS4[TL]@le+6800)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: std r3, (mySmallLocalExecTLS5[TL]@le+8400)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: std r4, mySmallLocalExecTLS4[TL]@le+6800-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: std r3, mySmallLocalExecTLS5[TL]@le+8400-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: li r3, 1191
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: addi r1, r1, 48
|
||||
; SMALL-LOCAL-EXEC-SMALLCM64-NEXT: ld r0, 16(r1)
|
||||
@ -70,8 +70,8 @@ define i64 @StoreLargeAccess1() {
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r4, 100
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: std r3, mySmallLocalExecTLS3[TL]@le+2000(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 882
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: std r4, (mySmallLocalExecTLS4[TL]@le+6800)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: std r3, (mySmallLocalExecTLS5[TL]@le+8400)-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: std r4, mySmallLocalExecTLS4[TL]@le+6800-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: std r3, mySmallLocalExecTLS5[TL]@le+8400-65536(r13)
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: li r3, 1191
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: addi r1, r1, 48
|
||||
; SMALL-LOCAL-EXEC-LARGECM64-NEXT: ld r0, 16(r1)
|
||||
|
@ -27,9 +27,9 @@ define i64 @StoreLargeAccess1() #1 {
|
||||
; COMMONCM-NEXT: stdx r5, r3, r4
|
||||
; COMMONCM-NEXT: li r3, 55
|
||||
; COMMONCM-NEXT: li r4, 64
|
||||
; COMMONCM-NEXT: std r3, (mySmallTLS2[TL]@le+696)-65536(r13)
|
||||
; COMMONCM-NEXT: std r3, mySmallTLS2[TL]@le+696-65536(r13)
|
||||
; COMMONCM-NEXT: li r3, 142
|
||||
; COMMONCM-NEXT: std r4, (mySmallTLS3[TL]@le+20000)-131072(r13)
|
||||
; COMMONCM-NEXT: std r4, mySmallTLS3[TL]@le+20000-131072(r13)
|
||||
; COMMONCM-NEXT: blr
|
||||
entry:
|
||||
%tls0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @mySmallTLS)
|
||||
|
@ -29,9 +29,9 @@ define i64 @StoreLargeAccess1() {
|
||||
; COMMONCM-NEXT: stdx r5, r3, r4
|
||||
; COMMONCM-NEXT: li r3, 55
|
||||
; COMMONCM-NEXT: li r4, 64
|
||||
; COMMONCM-NEXT: std r3, (mySmallTLS2[TL]@le+696)-65536(r13)
|
||||
; COMMONCM-NEXT: std r3, mySmallTLS2[TL]@le+696-65536(r13)
|
||||
; COMMONCM-NEXT: li r3, 142
|
||||
; COMMONCM-NEXT: std r4, (mySmallTLS3[TL]@le+20000)-131072(r13)
|
||||
; COMMONCM-NEXT: std r4, mySmallTLS3[TL]@le+20000-131072(r13)
|
||||
; COMMONCM-NEXT: blr
|
||||
entry:
|
||||
%tls0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @mySmallTLS)
|
||||
|
@ -26,9 +26,9 @@ declare void @extern_func()
|
||||
; CHECK-NEXT: .word 0 # 0x0
|
||||
; CHECK-NEXT: .word %pltpcrel(f0)
|
||||
; CHECK-NEXT: .word %pltpcrel(f1+4)
|
||||
; CHECK-NEXT: .word (f2-_ZTV1B)-8
|
||||
; CHECK-NEXT: .word f2-_ZTV1B-8
|
||||
; CHECK-NEXT: .word %pltpcrel(f3+12)
|
||||
; CHECK-NEXT: .word (f4-_ZTV1B)-8
|
||||
; CHECK-NEXT: .word f4-_ZTV1B-8
|
||||
; CHECK-NEXT: .size _ZTV1B, 28
|
||||
declare void @f0()
|
||||
declare void @f1()
|
||||
|
@ -16,6 +16,6 @@ declare void @fn3()
|
||||
; CHECK-NEXT: .word 0 # 0x0
|
||||
; CHECK-NEXT: .word %pltpcrel(fn1)
|
||||
; CHECK-NEXT: .word %pltpcrel(fn2+4)
|
||||
; CHECK-NEXT: .word (fn3-vtable)-4
|
||||
; CHECK-NEXT: .word (global4-vtable)-4
|
||||
; CHECK-NEXT: .word fn3-vtable-4
|
||||
; CHECK-NEXT: .word global4-vtable-4
|
||||
; CHECK-NEXT: .size vtable, 20
|
||||
|
@ -47,7 +47,7 @@ define arm_aapcs_vfpcc i32 @main() nounwind {
|
||||
; ELFASM-NEXT: @ %bb.4:
|
||||
; ELFASM-NEXT: .LCPI0_0:
|
||||
; ELFASM-NEXT: .Ltmp0:
|
||||
; ELFASM-NEXT: .long i(GOTTPOFF)-((.LPC0_0+4)-.Ltmp0)
|
||||
; ELFASM-NEXT: .long i(GOTTPOFF)-(.LPC0_0+4-.Ltmp0)
|
||||
entry:
|
||||
%0 = load i32, ptr @i, align 4
|
||||
switch i32 %0, label %bb2 [
|
||||
|
@ -1656,8 +1656,8 @@ define dso_local void @qux03() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L18$pb
|
||||
; DARWIN-32-PIC-NEXT: L18$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L18$pb)+64(%eax)
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L18$pb+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L18$pb+64(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: qux03:
|
||||
@ -1727,7 +1727,7 @@ define dso_local void @qux04() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L19$pb
|
||||
; DARWIN-32-PIC-NEXT: L19$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L19$pb+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -1807,7 +1807,7 @@ define dso_local void @qux05() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L20$pb
|
||||
; DARWIN-32-PIC-NEXT: L20$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L20$pb+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -1888,8 +1888,8 @@ define dso_local void @qux06() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L21$pb
|
||||
; DARWIN-32-PIC-NEXT: L21$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L21$pb)+64(%eax)
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L21$pb+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L21$pb+64(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: qux06:
|
||||
@ -1959,7 +1959,7 @@ define dso_local void @qux07() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L22$pb
|
||||
; DARWIN-32-PIC-NEXT: L22$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L22$pb+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -2039,7 +2039,7 @@ define dso_local void @qux08() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L23$pb
|
||||
; DARWIN-32-PIC-NEXT: L23$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L23$pb+64(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -3887,8 +3887,8 @@ define dso_local void @off03(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L42$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L42$pb)+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L42$pb)+64(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L42$pb+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L42$pb+64(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: off03:
|
||||
@ -3977,7 +3977,7 @@ define dso_local void @off04(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L43$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L43$pb)+64(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L43$pb+64(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L43$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -4068,7 +4068,7 @@ define dso_local void @off05(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L44$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L44$pb)+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L44$pb+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -4161,8 +4161,8 @@ define dso_local void @off06(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L45$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L45$pb)+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L45$pb)+64(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L45$pb+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L45$pb+64(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: off06:
|
||||
@ -4251,7 +4251,7 @@ define dso_local void @off07(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L46$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L46$pb)+64(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L46$pb+64(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L46$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -4342,7 +4342,7 @@ define dso_local void @off08(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L47$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L47$pb)+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L47$pb+64(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -4711,8 +4711,8 @@ define dso_local void @moo03(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L51$pb
|
||||
; DARWIN-32-PIC-NEXT: L51$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L51$pb)+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L51$pb)+262144(%eax)
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L51$pb+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L51$pb+262144(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: moo03:
|
||||
@ -4782,7 +4782,7 @@ define dso_local void @moo04(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L52$pb
|
||||
; DARWIN-32-PIC-NEXT: L52$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L52$pb)+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L52$pb+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L52$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -4862,7 +4862,7 @@ define dso_local void @moo05(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L53$pb
|
||||
; DARWIN-32-PIC-NEXT: L53$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L53$pb)+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L53$pb+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -4943,8 +4943,8 @@ define dso_local void @moo06(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L54$pb
|
||||
; DARWIN-32-PIC-NEXT: L54$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L54$pb)+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L54$pb)+262144(%eax)
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L54$pb+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L54$pb+262144(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: moo06:
|
||||
@ -5014,7 +5014,7 @@ define dso_local void @moo07(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L55$pb
|
||||
; DARWIN-32-PIC-NEXT: L55$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L55$pb)+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L55$pb+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L55$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -5094,7 +5094,7 @@ define dso_local void @moo08(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L56$pb
|
||||
; DARWIN-32-PIC-NEXT: L56$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L56$pb)+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L56$pb+262144(%eax), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -5488,8 +5488,8 @@ define dso_local void @big03(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L60$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L60$pb)+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L60$pb)+262144(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L60$pb+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L60$pb+262144(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: big03:
|
||||
@ -5578,7 +5578,7 @@ define dso_local void @big04(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L61$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L61$pb)+262144(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L61$pb+262144(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L61$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -5669,7 +5669,7 @@ define dso_local void @big05(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L62$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_dsrc-L62$pb)+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _dsrc-L62$pb+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -5762,8 +5762,8 @@ define dso_local void @big06(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L63$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L63$pb)+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L63$pb)+262144(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L63$pb+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L63$pb+262144(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: big06:
|
||||
@ -5852,7 +5852,7 @@ define dso_local void @big07(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L64$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L64$pb)+262144(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L64$pb+262144(%eax,%ecx,4), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L64$pb(%eax)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
@ -5943,7 +5943,7 @@ define dso_local void @big08(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L65$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: movl (_lsrc-L65$pb)+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _lsrc-L65$pb+262144(%eax,%ecx,4), %edx
|
||||
; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
@ -7787,7 +7787,7 @@ define dso_local ptr @bat03() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L93$pb
|
||||
; DARWIN-32-PIC-NEXT: L93$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_dsrc-L93$pb)+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _dsrc-L93$pb+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bat03:
|
||||
@ -7850,7 +7850,7 @@ define dso_local ptr @bat04() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L94$pb
|
||||
; DARWIN-32-PIC-NEXT: L94$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L94$pb)+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L94$pb+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bat04:
|
||||
@ -7988,7 +7988,7 @@ define dso_local ptr @bat06() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L96$pb
|
||||
; DARWIN-32-PIC-NEXT: L96$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_lsrc-L96$pb)+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _lsrc-L96$pb+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bat06:
|
||||
@ -8051,7 +8051,7 @@ define dso_local ptr @bat07() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L97$pb
|
||||
; DARWIN-32-PIC-NEXT: L97$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L97$pb)+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L97$pb+64(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bat07:
|
||||
@ -8485,7 +8485,7 @@ define dso_local ptr @bam03() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L103$pb
|
||||
; DARWIN-32-PIC-NEXT: L103$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_dsrc-L103$pb)+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _dsrc-L103$pb+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bam03:
|
||||
@ -8548,7 +8548,7 @@ define dso_local ptr @bam04() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L104$pb
|
||||
; DARWIN-32-PIC-NEXT: L104$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L104$pb)+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L104$pb+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bam04:
|
||||
@ -8686,7 +8686,7 @@ define dso_local ptr @bam06() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L106$pb
|
||||
; DARWIN-32-PIC-NEXT: L106$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_lsrc-L106$pb)+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _lsrc-L106$pb+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bam06:
|
||||
@ -8749,7 +8749,7 @@ define dso_local ptr @bam07() nounwind {
|
||||
; DARWIN-32-PIC-NEXT: calll L107$pb
|
||||
; DARWIN-32-PIC-NEXT: L107$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L107$pb)+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L107$pb+262144(%eax), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: bam07:
|
||||
@ -9294,7 +9294,7 @@ define dso_local ptr @cat03(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L114$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_dsrc-L114$pb)+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _dsrc-L114$pb+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cat03:
|
||||
@ -9368,7 +9368,7 @@ define dso_local ptr @cat04(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L115$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L115$pb)+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L115$pb+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cat04:
|
||||
@ -9523,7 +9523,7 @@ define dso_local ptr @cat06(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L117$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_lsrc-L117$pb)+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _lsrc-L117$pb+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cat06:
|
||||
@ -9597,7 +9597,7 @@ define dso_local ptr @cat07(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L118$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L118$pb)+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L118$pb+64(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cat07:
|
||||
@ -10153,7 +10153,7 @@ define dso_local ptr @cam03(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L125$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_dsrc-L125$pb)+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _dsrc-L125$pb+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cam03:
|
||||
@ -10227,7 +10227,7 @@ define dso_local ptr @cam04(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L126$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ddst-L126$pb)+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ddst-L126$pb+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cam04:
|
||||
@ -10382,7 +10382,7 @@ define dso_local ptr @cam06(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L128$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_lsrc-L128$pb)+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _lsrc-L128$pb+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cam06:
|
||||
@ -10456,7 +10456,7 @@ define dso_local ptr @cam07(i64 %i) nounwind {
|
||||
; DARWIN-32-PIC-NEXT: L129$pb:
|
||||
; DARWIN-32-PIC-NEXT: popl %eax
|
||||
; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
||||
; DARWIN-32-PIC-NEXT: leal (_ldst-L129$pb)+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: leal _ldst-L129$pb+262144(%eax,%ecx,4), %eax
|
||||
; DARWIN-32-PIC-NEXT: retl
|
||||
;
|
||||
; DARWIN-64-STATIC-LABEL: cam07:
|
||||
|
@ -265,7 +265,7 @@ define void @tf_bug(ptr %ptr) nounwind {
|
||||
; PIC-NEXT: L4$pb:
|
||||
; PIC-NEXT: popl %edi
|
||||
; PIC-NEXT: movl {{[0-9]+}}(%esp), %esi
|
||||
; PIC-NEXT: movl (_id-L4$pb)+4(%edi), %edx
|
||||
; PIC-NEXT: movl _id-L4$pb+4(%edi), %edx
|
||||
; PIC-NEXT: movl _id-L4$pb(%edi), %eax
|
||||
; PIC-NEXT: .p2align 4
|
||||
; PIC-NEXT: LBB4_1: ## %atomicrmw.start
|
||||
|
@ -36,7 +36,7 @@ define i64 @early_ioremap_pmd(i64 %addr) {
|
||||
; CHECK-NEXT: .Ltmp0:
|
||||
; CHECK-NEXT: jmp .Ltmp1
|
||||
; CHECK-NEXT: .Ltmp2:
|
||||
; CHECK-NEXT: .zero (-(((.Ltmp3-.Ltmp4)-(.Ltmp2-.Ltmp0))>0))*((.Ltmp3-.Ltmp4)-(.Ltmp2-.Ltmp0)),144
|
||||
; CHECK-NEXT: .zero -((.Ltmp3-.Ltmp4-(.Ltmp2-.Ltmp0))>0)*(.Ltmp3-.Ltmp4-(.Ltmp2-.Ltmp0)),144
|
||||
; CHECK-NEXT: .Ltmp5:
|
||||
entry:
|
||||
%0 = tail call i64 asm sideeffect "mov %cr3,$0\0A\09", "=r,=*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) nonnull @__force_order)
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
; Make sure that boolean immediates are properly (zero) extended.
|
||||
; CHECK: .Ltmp[[N:[0-9]+]]:
|
||||
; CHECK-NEXT: .quad (42+1)-.Ltmp[[N]]
|
||||
; CHECK-NEXT: .quad 42+1-.Ltmp[[N]]
|
||||
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
@ -24,7 +24,7 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
; CHECK-NEXT: .globl obj
|
||||
; CHECK: obj:
|
||||
; CHECK: .long 0
|
||||
; CHECK: .long (hidden_func-obj)-4
|
||||
; CHECK: .long hidden_func-obj-4
|
||||
|
||||
declare hidden void @hidden_func()
|
||||
|
||||
|
@ -166,9 +166,9 @@ tail:
|
||||
; Clause 1: call f(2) is guarded by catch1
|
||||
; CHECK-NEXT: .long 0
|
||||
; ^ flags (0 => catch handler)
|
||||
; CHECK-NEXT: .long ([[test1_before_f2]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_before_f2]]-[[test1_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test1_after_f2]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_after_f2]]-[[test1_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test1_catch1]]-[[test1_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -179,9 +179,9 @@ tail:
|
||||
; Clause 2: call f(2) is also guarded by catch2
|
||||
; CHECK-NEXT: .long 0
|
||||
; ^ flags (0 => catch handler)
|
||||
; CHECK-NEXT: .long ([[test1_before_f2]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_before_f2]]-[[test1_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test1_after_f2]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_after_f2]]-[[test1_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test1_catch2]]-[[test1_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -192,9 +192,9 @@ tail:
|
||||
; Clause 3: calls f(1) and f(2) are guarded by finally
|
||||
; CHECK-NEXT: .long 2
|
||||
; ^ flags (2 => finally handler)
|
||||
; CHECK-NEXT: .long ([[test1_before_f1]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_before_f1]]-[[test1_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test1_after_f2]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_after_f2]]-[[test1_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test1_finally]]-[[test1_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -208,9 +208,9 @@ tail:
|
||||
; is the main function, not that funclet.
|
||||
; CHECK-NEXT: .long 10
|
||||
; ^ flags (2 => finally handler | 8 => duplicate)
|
||||
; CHECK-NEXT: .long ([[test1_before_f3]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_before_f3]]-[[test1_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test1_after_f3]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_after_f3]]-[[test1_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test1_finally]]-[[test1_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -221,9 +221,9 @@ tail:
|
||||
; Clause 5: call f(5) is guarded by fault
|
||||
; CHECK-NEXT: .long 4
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test1_before_f5]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_before_f5]]-[[test1_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test1_after_f5]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_after_f5]]-[[test1_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test1_fault]]-[[test1_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -237,9 +237,9 @@ tail:
|
||||
; is the main function, not that funclet.
|
||||
; CHECK-NEXT: .long 10
|
||||
; ^ flags (2 => finally handler | 8 => duplicate)
|
||||
; CHECK-NEXT: .long ([[test1_before_f4]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_before_f4]]-[[test1_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test1_after_f5]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_after_f5]]-[[test1_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test1_finally]]-[[test1_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -253,9 +253,9 @@ tail:
|
||||
; is the main function, not that funclet.
|
||||
; CHECK-NEXT: .long 10
|
||||
; ^ flags (2 => finally handler | 8 => duplicate)
|
||||
; CHECK-NEXT: .long ([[test1_before_f6]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_before_f6]]-[[test1_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test1_after_f6]]-[[test1_begin]])+1
|
||||
; CHECK-NEXT: .long [[test1_after_f6]]-[[test1_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test1_finally]]-[[test1_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -343,9 +343,9 @@ unreachable:
|
||||
; Clause 1: call f(1) is guarded by fault
|
||||
; CHECK-NEXT: .long 4
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test2_before_f1]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_before_f1]]-[[test2_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test2_after_f1]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_after_f1]]-[[test2_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test2_fault]]-[[test2_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -356,9 +356,9 @@ unreachable:
|
||||
; Clause 2: call f(1) is also guarded by catch2
|
||||
; CHECK-NEXT: .long 0
|
||||
; ^ flags (0 => catch handler)
|
||||
; CHECK-NEXT: .long ([[test2_before_f1]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_before_f1]]-[[test2_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test2_after_f1]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_after_f1]]-[[test2_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test2_catch2]]-[[test2_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -369,9 +369,9 @@ unreachable:
|
||||
; Clause 3: calls f(2) is guarded by catch1
|
||||
; CHECK-NEXT: .long 0
|
||||
; ^ flags (0 => catch handler)
|
||||
; CHECK-NEXT: .long ([[test2_before_f2]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_before_f2]]-[[test2_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test2_after_f2]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_after_f2]]-[[test2_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test2_catch1]]-[[test2_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -385,9 +385,9 @@ unreachable:
|
||||
; is the main function, not that funclet.
|
||||
; CHECK-NEXT: .long 8
|
||||
; ^ flags (0 => catch handler | 8 => duplicate)
|
||||
; CHECK-NEXT: .long ([[test2_before_f2]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_before_f2]]-[[test2_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test2_after_f2]]-[[test2_begin]])+1
|
||||
; CHECK-NEXT: .long [[test2_after_f2]]-[[test2_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test2_catch2]]-[[test2_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -559,9 +559,9 @@ unreachable:
|
||||
; Clause 1: call f(1) is guarded by fault1
|
||||
; CHECK-NEXT: .long 4
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f1]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f1]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f1]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f1]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault1]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -572,9 +572,9 @@ unreachable:
|
||||
; Clause 3: call f(6) is guarded by catch1
|
||||
; CHECK-NEXT: .long 0
|
||||
; ^ flags (0 => catch handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f6]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f6]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f6]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f6]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_catch1]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -585,9 +585,9 @@ unreachable:
|
||||
; Clause 3: call f(6) is also guarded by catch2
|
||||
; CHECK-NEXT: .long 0
|
||||
; ^ flags (0 => catch handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f6]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f6]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f6]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f6]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_catch2]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -601,9 +601,9 @@ unreachable:
|
||||
; is fault1, not that funclet.
|
||||
; CHECK-NEXT: .long 12
|
||||
; ^ flags (4 => fault handler | 8 => duplicate)
|
||||
; CHECK-NEXT: .long ([[test3_before_f7]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f7]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f7]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f7]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault5]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -614,9 +614,9 @@ unreachable:
|
||||
; Clause 5: call f(4) is guarded by fault4
|
||||
; CHECK-NEXT: .long 4
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f4]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f4]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f4]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f4]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault4]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -630,9 +630,9 @@ unreachable:
|
||||
; is fault1, not that funclet.
|
||||
; CHECK-NEXT: .long 12
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f4]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f4]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f4]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f4]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault5]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -643,9 +643,9 @@ unreachable:
|
||||
; Clause 7: call f(3) is guarded by fault3
|
||||
; CHECK-NEXT: .long 4
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f3]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f3]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f3]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f3]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault3]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -659,9 +659,9 @@ unreachable:
|
||||
; is fault1, not that funclet.
|
||||
; CHECK-NEXT: .long 12
|
||||
; ^ flags (4 => fault handler | 8 => duplicate)
|
||||
; CHECK-NEXT: .long ([[test3_before_f3]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f3]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f3]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f3]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault5]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -672,9 +672,9 @@ unreachable:
|
||||
; Clause 9: call f(2) is guarded by fault2
|
||||
; CHECK-NEXT: .long 4
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f2]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f2]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f2]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f2]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault2]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
@ -685,9 +685,9 @@ unreachable:
|
||||
; Clause 10: call f(2) is guarded by fault5
|
||||
; CHECK-NEXT: .long 4
|
||||
; ^ flags (4 => fault handler)
|
||||
; CHECK-NEXT: .long ([[test3_before_f2]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_before_f2]]-[[test3_begin]]+1
|
||||
; ^ offset of start of clause
|
||||
; CHECK-NEXT: .long ([[test3_after_f2]]-[[test3_begin]])+1
|
||||
; CHECK-NEXT: .long [[test3_after_f2]]-[[test3_begin]]+1
|
||||
; ^ offset of end of clause
|
||||
; CHECK-NEXT: .long [[test3_fault5]]-[[test3_begin]]
|
||||
; ^ offset of start of handler
|
||||
|
@ -13,7 +13,7 @@ declare void @fn3()
|
||||
@global4 = external unnamed_addr global i8
|
||||
|
||||
; CHECK: .long 0
|
||||
; CHECK-NEXT: .long (fn1@PLT-vtable)-4
|
||||
; CHECK-NEXT: .long (fn2@PLT-vtable)-4
|
||||
; CHECK-NEXT: .long (fn3-vtable)-4
|
||||
; CHECK-NEXT: .long (global4-vtable)-4
|
||||
; CHECK-NEXT: .long fn1@PLT-vtable-4
|
||||
; CHECK-NEXT: .long fn2@PLT-vtable-4
|
||||
; CHECK-NEXT: .long fn3-vtable-4
|
||||
; CHECK-NEXT: .long global4-vtable-4
|
||||
|
@ -11,6 +11,6 @@ declare void @fn2() unnamed_addr
|
||||
declare void @fn3()
|
||||
|
||||
; CHECK: .long 0
|
||||
; CHECK-NEXT: .long (fn1@PLT-vtable)-4
|
||||
; CHECK-NEXT: .long (fn2@PLT-vtable)-4
|
||||
; CHECK-NEXT: .long (fn3-vtable)-4
|
||||
; CHECK-NEXT: .long fn1@PLT-vtable-4
|
||||
; CHECK-NEXT: .long fn2@PLT-vtable-4
|
||||
; CHECK-NEXT: .long fn3-vtable-4
|
||||
|
@ -91,25 +91,25 @@ _g9:
|
||||
.quad ("_g 7" + 7)@AUTH(ia,16)
|
||||
.quad 0
|
||||
|
||||
// ASM: .xword (_g9@AUTH(ia,42))-(_g8@AUTH(ia,42))
|
||||
// ASM: .xword _g9@AUTH(ia,42)-_g8@AUTH(ia,42)
|
||||
.quad _g9@AUTH(ia,42) - _g8@AUTH(ia,42)
|
||||
.quad 0
|
||||
|
||||
.ifdef ASMONLY
|
||||
|
||||
// ASM: .xword (_g10@AUTH(ia,42))+1
|
||||
// ASM: .xword _g10@AUTH(ia,42)+1
|
||||
.quad _g10@AUTH(ia,42) + 1
|
||||
|
||||
// ASM: .xword 1+(_g11@AUTH(ia,42))
|
||||
// ASM: .xword 1+_g11@AUTH(ia,42)
|
||||
.quad 1 + _g11@AUTH(ia,42)
|
||||
|
||||
// ASM: .xword (1+(_g12@AUTH(ia,42)))+1
|
||||
// ASM: .xword 1+_g12@AUTH(ia,42)+1
|
||||
.quad 1 + _g12@AUTH(ia,42) + 1
|
||||
|
||||
// ASM: .xword (_g13@AUTH(ia,42))+(_g14@AUTH(ia,42))
|
||||
// ASM: .xword _g13@AUTH(ia,42)+_g14@AUTH(ia,42)
|
||||
.quad _g13@AUTH(ia,42) + _g14@AUTH(ia,42)
|
||||
|
||||
// ASM: .xword (_g9@AUTH(ia,42))-_g8
|
||||
// ASM: .xword _g9@AUTH(ia,42)-_g8
|
||||
.quad _g9@AUTH(ia,42) - _g8
|
||||
.quad 0
|
||||
|
||||
|
@ -269,8 +269,8 @@ BB1:
|
||||
v_nop_e64
|
||||
BB2:
|
||||
s_sub_u32 vcc_lo, vcc_lo, (BB2+4)-BB1
|
||||
// VI: s_sub_u32 vcc_lo, vcc_lo, (BB2+4)-BB1 ; encoding: [0x6a,0xff,0xea,0x80,A,A,A,A]
|
||||
// VI-NEXT: ; fixup A - offset: 4, value: (BB2+4)-BB1, kind: FK_Data_4
|
||||
// VI: s_sub_u32 vcc_lo, vcc_lo, BB2+4-BB1 ; encoding: [0x6a,0xff,0xea,0x80,A,A,A,A]
|
||||
// VI-NEXT: ; fixup A - offset: 4, value: BB2+4-BB1, kind: FK_Data_4
|
||||
s_add_u32 vcc_lo, vcc_lo, (BB2-BB1)&4294967295
|
||||
// VI: s_add_u32 vcc_lo, vcc_lo, (BB2-BB1)&4294967295 ; encoding: [0x6a,0xff,0x6a,0x80,A,A,A,A]
|
||||
// VI-NEXT: ; fixup A - offset: 4, value: (BB2-BB1)&4294967295, kind: FK_Data_4
|
||||
|
@ -115,35 +115,35 @@ expr_defined:
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_flat_scratch_init 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_private_segment_size 0
|
||||
// ASM-NEXT: .amdhsa_wavefront_size32 1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_next_free_vgpr defined_value+4
|
||||
// ASM-NEXT: .amdhsa_next_free_sgpr defined_value+5
|
||||
// ASM-NEXT: .amdhsa_reserve_vcc defined_boolean
|
||||
// ASM-NEXT: .amdhsa_reserve_flat_scratch defined_boolean
|
||||
// ASM-NEXT: .amdhsa_reserve_xnack_mask 1
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_ieee_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&8388608)>>23
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_workgroup_processor_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_memory_ordered (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_forward_progress (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&2147483648)>>31
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_ieee_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&8388608)>>23
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_workgroup_processor_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_memory_ordered (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_forward_progress (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&2147483648)>>31
|
||||
// ASM-NEXT: .amdhsa_shared_vgpr_count 0
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1073741824)>>30
|
||||
// ASM-NEXT: .end_amdhsa_kernel
|
||||
|
||||
// ASM: .set defined_value, 41
|
||||
|
@ -113,34 +113,34 @@ expr_defined:
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_dispatch_id 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_private_segment_size 0
|
||||
// ASM-NEXT: .amdhsa_wavefront_size32 1
|
||||
// ASM-NEXT: .amdhsa_enable_private_segment ((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_enable_private_segment ((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_next_free_vgpr defined_value+4
|
||||
// ASM-NEXT: .amdhsa_next_free_sgpr defined_value+5
|
||||
// ASM-NEXT: .amdhsa_reserve_vcc defined_boolean
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_ieee_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&8388608)>>23
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_workgroup_processor_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_memory_ordered (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_forward_progress (((((((((((((((((((3769368576|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&2147483648)>>31
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_ieee_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&8388608)>>23
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_workgroup_processor_mode (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_memory_ordered (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_forward_progress (((((((((((((((((((3769368576|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&2147483648)>>31
|
||||
// ASM-NEXT: .amdhsa_shared_vgpr_count 0
|
||||
// ASM-NEXT: .amdhsa_inst_pref_size 0
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&1073741824)>>30
|
||||
// ASM-NEXT: .end_amdhsa_kernel
|
||||
|
||||
// ASM: .set defined_value, 41
|
||||
|
@ -117,32 +117,32 @@ expr_defined:
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_dispatch_id 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_private_segment_size 0
|
||||
// ASM-NEXT: .amdhsa_wavefront_size32 1
|
||||
// ASM-NEXT: .amdhsa_enable_private_segment ((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_enable_private_segment ((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_next_free_vgpr defined_value+4
|
||||
// ASM-NEXT: .amdhsa_next_free_sgpr defined_value+5
|
||||
// ASM-NEXT: .amdhsa_reserve_vcc defined_boolean
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_workgroup_processor_mode (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_memory_ordered (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_forward_progress (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&2147483648)>>31
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_workgroup_processor_mode (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_memory_ordered (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_forward_progress (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&2147483648)>>31
|
||||
// ASM-NEXT: .amdhsa_inst_pref_size (((defined_value+6)<<4)&4080)>>4
|
||||
// ASM-NEXT: .amdhsa_round_robin_scheduling (((((((((((((((((((((3758882816|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~67108864))|(defined_boolean<<26))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~2147483648))|(defined_boolean<<31))&(~2097152))|(defined_boolean<<21))&(~63))|(((alignto(max(defined_value+4, 1), 8))/8)-1))&(~960))&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~1))|defined_boolean)&(~62))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_round_robin_scheduling (((((((((((((((((((((3758882816|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~67108864)|(defined_boolean<<26))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~2147483648)|(defined_boolean<<31))&~2097152)|(defined_boolean<<21))&~63)|((alignto(max(defined_value+4, 1), 8)/8)-1))&~960)&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~1)|defined_boolean)&~62)&1073741824)>>30
|
||||
// ASM-NEXT: .end_amdhsa_kernel
|
||||
|
||||
// ASM: .set defined_value, 41
|
||||
|
@ -106,29 +106,29 @@ expr_defined:
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_dispatch_id 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_flat_scratch_init 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_private_segment_size 0
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_next_free_vgpr defined_value+4
|
||||
// ASM-NEXT: .amdhsa_next_free_sgpr defined_value+5
|
||||
// ASM-NEXT: .amdhsa_reserve_vcc defined_boolean
|
||||
// ASM-NEXT: .amdhsa_reserve_flat_scratch defined_boolean
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 0)), 1), 8))/8)-1)<<6))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 0)), 1), 8))/8)-1)<<6))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 0)), 1), 8))/8)-1)<<6))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 0)), 1), 8))/8)-1)<<6))&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 0), 1), 8)/8)-1)<<6))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 0), 1), 8)/8)-1)<<6))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 0), 1), 8)/8)-1)<<6))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 0), 1), 8)/8)-1)<<6))&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp 1
|
||||
// ASM-NEXT: .amdhsa_ieee_mode 1
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1073741824)>>30
|
||||
// ASM-NEXT: .end_amdhsa_kernel
|
||||
|
||||
// ASM: .set defined_value, 41
|
||||
|
@ -107,30 +107,30 @@ expr_defined:
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_dispatch_id 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_flat_scratch_init 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_private_segment_size 0
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&128)>>7
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_next_free_vgpr defined_value+4
|
||||
// ASM-NEXT: .amdhsa_next_free_sgpr defined_value+5
|
||||
// ASM-NEXT: .amdhsa_reserve_vcc defined_boolean
|
||||
// ASM-NEXT: .amdhsa_reserve_flat_scratch defined_boolean
|
||||
// ASM-NEXT: .amdhsa_reserve_xnack_mask 1
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&(~49152))|(defined_2_bits<<14))&(~196608))|(defined_2_bits<<16))&(~786432))|(defined_2_bits<<18))&(~63))|(((alignto(max(defined_value+4, 1), 4))/4)-1))&(~960))|((((alignto(max((defined_value+5)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 ((((((((((((11272192|(defined_2_bits<<12))&~49152)|(defined_2_bits<<14))&~196608)|(defined_2_bits<<16))&~786432)|(defined_2_bits<<18))&~63)|((alignto(max(defined_value+4, 1), 4)/4)-1))&~960)|(((alignto(max(defined_value+5+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&786432)>>18
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp 1
|
||||
// ASM-NEXT: .amdhsa_ieee_mode 1
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&(~128))|(defined_boolean<<7))&(~256))|(defined_boolean<<8))&(~512))|(defined_boolean<<9))&(~1024))|(defined_boolean<<10))&(~16777216))|(defined_boolean<<24))&(~33554432))|(defined_boolean<<25))&(~67108864))|(defined_boolean<<26))&(~134217728))|(defined_boolean<<27))&(~268435456))|(defined_boolean<<28))&(~536870912))|(defined_boolean<<29))&(~1073741824))|(defined_boolean<<30))&(~62))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((((((((((((((((((((((((128|(defined_2_bits<<11))&~128)|(defined_boolean<<7))&~256)|(defined_boolean<<8))&~512)|(defined_boolean<<9))&~1024)|(defined_boolean<<10))&~16777216)|(defined_boolean<<24))&~33554432)|(defined_boolean<<25))&~67108864)|(defined_boolean<<26))&~134217728)|(defined_boolean<<27))&~268435456)|(defined_boolean<<28))&~536870912)|(defined_boolean<<29))&~1073741824)|(defined_boolean<<30))&~62)&1073741824)>>30
|
||||
// ASM-NEXT: .end_amdhsa_kernel
|
||||
|
||||
// ASM: .set defined_value, 41
|
||||
|
@ -80,33 +80,33 @@ expr_defined:
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_kernarg_preload_length 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_kernarg_preload_offset 0
|
||||
// ASM-NEXT: .amdhsa_user_sgpr_private_segment_size 0
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((128|defined_boolean)&(~62))&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset ((128|defined_boolean)&~62)&1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_x 1
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((128|defined_boolean)&(~62))&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((128|defined_boolean)&(~62))&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((128|defined_boolean)&(~62))&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((128|defined_boolean)&(~62))&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_y (((128|defined_boolean)&~62)&256)>>8
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_id_z (((128|defined_boolean)&~62)&512)>>9
|
||||
// ASM-NEXT: .amdhsa_system_sgpr_workgroup_info (((128|defined_boolean)&~62)&1024)>>10
|
||||
// ASM-NEXT: .amdhsa_system_vgpr_workitem_id (((128|defined_boolean)&~62)&6144)>>11
|
||||
// ASM-NEXT: .amdhsa_next_free_vgpr defined_boolean+1
|
||||
// ASM-NEXT: .amdhsa_next_free_sgpr defined_boolean+2
|
||||
// ASM-NEXT: .amdhsa_accum_offset 4
|
||||
// ASM-NEXT: .amdhsa_reserve_vcc defined_boolean
|
||||
// ASM-NEXT: .amdhsa_reserve_flat_scratch defined_boolean
|
||||
// ASM-NEXT: .amdhsa_reserve_xnack_mask 1
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 ((((((((((9175040|(defined_boolean<<21))&(~8388608))|(defined_boolean<<23))&(~67108864))|(defined_boolean<<26))&(~63))|(((alignto(max(defined_boolean+1, 1), 8))/8)-1))&(~960))|((((alignto(max((defined_boolean+2)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 ((((((((((9175040|(defined_boolean<<21))&(~8388608))|(defined_boolean<<23))&(~67108864))|(defined_boolean<<26))&(~63))|(((alignto(max(defined_boolean+1, 1), 8))/8)-1))&(~960))|((((alignto(max((defined_boolean+2)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 ((((((((((9175040|(defined_boolean<<21))&(~8388608))|(defined_boolean<<23))&(~67108864))|(defined_boolean<<26))&(~63))|(((alignto(max(defined_boolean+1, 1), 8))/8)-1))&(~960))|((((alignto(max((defined_boolean+2)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_32 ((((((((((9175040|(defined_boolean<<21))&~8388608)|(defined_boolean<<23))&~67108864)|(defined_boolean<<26))&~63)|((alignto(max(defined_boolean+1, 1), 8)/8)-1))&~960)|(((alignto(max(defined_boolean+2+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&12288)>>12
|
||||
// ASM-NEXT: .amdhsa_float_round_mode_16_64 ((((((((((9175040|(defined_boolean<<21))&~8388608)|(defined_boolean<<23))&~67108864)|(defined_boolean<<26))&~63)|((alignto(max(defined_boolean+1, 1), 8)/8)-1))&~960)|(((alignto(max(defined_boolean+2+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&49152)>>14
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_32 ((((((((((9175040|(defined_boolean<<21))&~8388608)|(defined_boolean<<23))&~67108864)|(defined_boolean<<26))&~63)|((alignto(max(defined_boolean+1, 1), 8)/8)-1))&~960)|(((alignto(max(defined_boolean+2+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&196608)>>16
|
||||
// ASM-NEXT: .amdhsa_float_denorm_mode_16_64 3
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp ((((((((((9175040|(defined_boolean<<21))&(~8388608))|(defined_boolean<<23))&(~67108864))|(defined_boolean<<26))&(~63))|(((alignto(max(defined_boolean+1, 1), 8))/8)-1))&(~960))|((((alignto(max((defined_boolean+2)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_ieee_mode ((((((((((9175040|(defined_boolean<<21))&(~8388608))|(defined_boolean<<23))&(~67108864))|(defined_boolean<<26))&(~63))|(((alignto(max(defined_boolean+1, 1), 8))/8)-1))&(~960))|((((alignto(max((defined_boolean+2)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&8388608)>>23
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow ((((((((((9175040|(defined_boolean<<21))&(~8388608))|(defined_boolean<<23))&(~67108864))|(defined_boolean<<26))&(~63))|(((alignto(max(defined_boolean+1, 1), 8))/8)-1))&(~960))|((((alignto(max((defined_boolean+2)+(extrasgprs(defined_boolean, defined_boolean, 1)), 1), 8))/8)-1)<<6))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_tg_split (((defined_boolean<<16)&(~63))&65536)>>16
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((128|defined_boolean)&(~62))&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((128|defined_boolean)&(~62))&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((128|defined_boolean)&(~62))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((128|defined_boolean)&(~62))&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((128|defined_boolean)&(~62))&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((128|defined_boolean)&(~62))&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((128|defined_boolean)&(~62))&1073741824)>>30
|
||||
// ASM-NEXT: .amdhsa_dx10_clamp ((((((((((9175040|(defined_boolean<<21))&~8388608)|(defined_boolean<<23))&~67108864)|(defined_boolean<<26))&~63)|((alignto(max(defined_boolean+1, 1), 8)/8)-1))&~960)|(((alignto(max(defined_boolean+2+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&2097152)>>21
|
||||
// ASM-NEXT: .amdhsa_ieee_mode ((((((((((9175040|(defined_boolean<<21))&~8388608)|(defined_boolean<<23))&~67108864)|(defined_boolean<<26))&~63)|((alignto(max(defined_boolean+1, 1), 8)/8)-1))&~960)|(((alignto(max(defined_boolean+2+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&8388608)>>23
|
||||
// ASM-NEXT: .amdhsa_fp16_overflow ((((((((((9175040|(defined_boolean<<21))&~8388608)|(defined_boolean<<23))&~67108864)|(defined_boolean<<26))&~63)|((alignto(max(defined_boolean+1, 1), 8)/8)-1))&~960)|(((alignto(max(defined_boolean+2+extrasgprs(defined_boolean, defined_boolean, 1), 1), 8)/8)-1)<<6))&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_tg_split (((defined_boolean<<16)&~63)&65536)>>16
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_invalid_op (((128|defined_boolean)&~62)&16777216)>>24
|
||||
// ASM-NEXT: .amdhsa_exception_fp_denorm_src (((128|defined_boolean)&~62)&33554432)>>25
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_div_zero (((128|defined_boolean)&~62)&67108864)>>26
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_overflow (((128|defined_boolean)&~62)&134217728)>>27
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_underflow (((128|defined_boolean)&~62)&268435456)>>28
|
||||
// ASM-NEXT: .amdhsa_exception_fp_ieee_inexact (((128|defined_boolean)&~62)&536870912)>>29
|
||||
// ASM-NEXT: .amdhsa_exception_int_div_zero (((128|defined_boolean)&~62)&1073741824)>>30
|
||||
// ASM-NEXT: .end_amdhsa_kernel
|
||||
|
||||
// ASM: .set defined_boolean, 1
|
||||
|
@ -74,7 +74,7 @@
|
||||
.set max_neg_number, max(neg_one)
|
||||
|
||||
// ASM: .set max_with_subexpr, 3
|
||||
// ASM: .set max_as_subexpr, 1+(max(4, 3, five))
|
||||
// ASM: .set max_as_subexpr, 1+max(4, 3, five)
|
||||
// ASM: .set max_recursive_subexpr, max(max(1, four), 3, max_expression_all)
|
||||
|
||||
.set max_with_subexpr, max(((one | 3) << 3) / 8)
|
||||
@ -112,7 +112,7 @@
|
||||
.set or_with_or_sym, or(or, 4, 3, one, two)
|
||||
|
||||
// ASM: .set or_with_subexpr, 3
|
||||
// ASM: .set or_as_subexpr, 1+(or(4, 3, five))
|
||||
// ASM: .set or_as_subexpr, 1+or(4, 3, five)
|
||||
// ASM: .set or_recursive_subexpr, or(or(1, four), 3, or_expression_all)
|
||||
|
||||
.set or_with_subexpr, or(((one | 3) << 3) / 8)
|
||||
|
@ -289,8 +289,8 @@ Lforward:
|
||||
@ CHECK: addseq r0, pc, #-1073741824 @ encoding: [0x03,0x01,0x9f,0x02]
|
||||
@ CHECK: Ltmp0:
|
||||
@ CHECK-NEXT: Ltmp1:
|
||||
@ CHECK-NEXT: adr r0, (Ltmp1+8)+(Lback-Ltmp0) @ encoding: [A,A,0x0f'A',0xe2'A']
|
||||
@ CHECK-NEXT: @ fixup A - offset: 0, value: (Ltmp1+8)+(Lback-Ltmp0), kind: fixup_arm_adr_pcrel_12
|
||||
@ CHECK-NEXT: adr r0, Ltmp1+8+(Lback-Ltmp0) @ encoding: [A,A,0x0f'A',0xe2'A']
|
||||
@ CHECK-NEXT: @ fixup A - offset: 0, value: Ltmp1+8+(Lback-Ltmp0), kind: fixup_arm_adr_pcrel_12
|
||||
|
||||
@ Test right shift by 32, which is encoded as 0
|
||||
add r3, r1, r2, lsr #32
|
||||
|
@ -26,8 +26,8 @@ bar:
|
||||
@ ASM-NEXT: movt r0, :upper16:(GOT-(.LPC0_2+8))
|
||||
@ ASM: movw r0, :lower16:(extern_symbol+1234)
|
||||
@ ASM-NEXT: movt r0, :upper16:(extern_symbol+1234)
|
||||
@ ASM: movw r0, :lower16:((foo-bar)+1234)
|
||||
@ ASM-NEXT: movt r0, :upper16:((foo-bar)+1234)
|
||||
@ ASM: movw r0, :lower16:(foo-bar+1234)
|
||||
@ ASM-NEXT: movt r0, :upper16:(foo-bar+1234)
|
||||
|
||||
@OBJ: Disassembly of section .text:
|
||||
@OBJ-EMPTY:
|
||||
|
@ -4,7 +4,7 @@
|
||||
@ ARM relocatable object files try to look like they're pre-linked, so the
|
||||
@ offsets in the instructions are a best-guess. I suspect the "-3" should b
|
||||
|
||||
@ CHECK: movw r1, :lower16:((_bar-8)-3)
|
||||
@ CHECK: movw r1, :lower16:(_bar-8-3)
|
||||
@ [...]
|
||||
@ CHECK: .long {{[0-9]*[13579]}}
|
||||
|
||||
|
@ -10,11 +10,11 @@ foo:
|
||||
.short 0xf74c
|
||||
.short 0xf4c7
|
||||
|
||||
; CHECK: brvc (.Ltmp0+8)+2 ; encoding: [0bAAAAA011,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+8)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvc .Ltmp0+8+2 ; encoding: [0bAAAAA011,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+8+2, kind: fixup_7_pcrel
|
||||
;
|
||||
; CHECK: brcc (.Ltmp1-16)+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1-16)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcc .Ltmp1-16+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1-16+2, kind: fixup_7_pcrel
|
||||
|
||||
; INST-LABEL: <foo>:
|
||||
; INST-NEXT: 23 f4 brvc .+8
|
||||
|
@ -10,10 +10,10 @@ foo:
|
||||
.short 0xf34c
|
||||
.short 0xf077
|
||||
|
||||
; CHECK: brvs (.Ltmp0+8)+2 ; encoding: [0bAAAAA011,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+8)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs (.Ltmp1-12)+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1-12)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvs .Ltmp0+8+2 ; encoding: [0bAAAAA011,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+8+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs .Ltmp1-12+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1-12+2, kind: fixup_7_pcrel
|
||||
|
||||
; INST-LABEL: <foo>:
|
||||
; INST-NEXT: 23 f0 brvs .+8
|
||||
|
@ -12,12 +12,12 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brcc (.Ltmp0+66)+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+66)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcc (.Ltmp1-22)+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1-22)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcc (.Ltmp2+66)+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp2+66)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcc .Ltmp0+66+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+66+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcc .Ltmp1-22+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1-22+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcc .Ltmp2+66+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp2+66+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcc bar ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -12,12 +12,12 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brcs (.Ltmp0+8)+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+8)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs (.Ltmp1+4)+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+4)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs (.Ltmp2+8)+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp2+8)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs .Ltmp0+8+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+8+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs .Ltmp1+4+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+4+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs .Ltmp2+8+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp2+8+2, kind: fixup_7_pcrel
|
||||
; CHECK: brcs bar ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -12,12 +12,12 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: breq (.Ltmp0-18)+2 ; encoding: [0bAAAAA001,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0-18)+2, kind: fixup_7_pcrel
|
||||
; CHECK: breq (.Ltmp1-12)+2 ; encoding: [0bAAAAA001,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1-12)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brbs 1, (.Ltmp2-18)+2 ; encoding: [0bAAAAA001,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp2-18)+2, kind: fixup_7_pcrel
|
||||
; CHECK: breq .Ltmp0-18+2 ; encoding: [0bAAAAA001,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0-18+2, kind: fixup_7_pcrel
|
||||
; CHECK: breq .Ltmp1-12+2 ; encoding: [0bAAAAA001,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1-12+2, kind: fixup_7_pcrel
|
||||
; CHECK: brbs 1, .Ltmp2-18+2 ; encoding: [0bAAAAA001,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp2-18+2, kind: fixup_7_pcrel
|
||||
; CHECK: brbs 1, bar ; encoding: [0bAAAAA001,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brge (.Ltmp0+50)+2 ; encoding: [0bAAAAA100,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+50)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brge (.Ltmp1+42)+2 ; encoding: [0bAAAAA100,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+42)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brge .Ltmp0+50+2 ; encoding: [0bAAAAA100,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+50+2, kind: fixup_7_pcrel
|
||||
; CHECK: brge .Ltmp1+42+2 ; encoding: [0bAAAAA100,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+42+2, kind: fixup_7_pcrel
|
||||
; CHECK: brge bar ; encoding: [0bAAAAA100,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brhc (.Ltmp0+12)+2 ; encoding: [0bAAAAA101,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+12)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhc (.Ltmp1+14)+2 ; encoding: [0bAAAAA101,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+14)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhc .Ltmp0+12+2 ; encoding: [0bAAAAA101,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+12+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhc .Ltmp1+14+2 ; encoding: [0bAAAAA101,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+14+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhc bar ; encoding: [0bAAAAA101,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brhs (.Ltmp0-66)+2 ; encoding: [0bAAAAA101,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0-66)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhs (.Ltmp1+14)+2 ; encoding: [0bAAAAA101,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+14)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhs .Ltmp0-66+2 ; encoding: [0bAAAAA101,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0-66+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhs .Ltmp1+14+2 ; encoding: [0bAAAAA101,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+14+2, kind: fixup_7_pcrel
|
||||
; CHECK: brhs bar ; encoding: [0bAAAAA101,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brid (.Ltmp0+42)+2 ; encoding: [0bAAAAA111,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+42)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brid (.Ltmp1+62)+2 ; encoding: [0bAAAAA111,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+62)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brid .Ltmp0+42+2 ; encoding: [0bAAAAA111,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+42+2, kind: fixup_7_pcrel
|
||||
; CHECK: brid .Ltmp1+62+2 ; encoding: [0bAAAAA111,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+62+2, kind: fixup_7_pcrel
|
||||
; CHECK: brid bar ; encoding: [0bAAAAA111,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brie (.Ltmp0+20)+2 ; encoding: [0bAAAAA111,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+20)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brie (.Ltmp1+40)+2 ; encoding: [0bAAAAA111,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+40)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brie .Ltmp0+20+2 ; encoding: [0bAAAAA111,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+20+2, kind: fixup_7_pcrel
|
||||
; CHECK: brie .Ltmp1+40+2 ; encoding: [0bAAAAA111,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+40+2, kind: fixup_7_pcrel
|
||||
; CHECK: brie bar ; encoding: [0bAAAAA111,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brlo (.Ltmp0+12)+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+12)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlo (.Ltmp1+28)+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+28)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlo .Ltmp0+12+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+12+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlo .Ltmp1+28+2 ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+28+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlo bar ; encoding: [0bAAAAA000,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brlt (.Ltmp0+16)+2 ; encoding: [0bAAAAA100,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+16)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlt (.Ltmp1+2)+2 ; encoding: [0bAAAAA100,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+2)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlt .Ltmp0+16+2 ; encoding: [0bAAAAA100,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+16+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlt .Ltmp1+2+2 ; encoding: [0bAAAAA100,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+2+2, kind: fixup_7_pcrel
|
||||
; CHECK: brlt bar ; encoding: [0bAAAAA100,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brmi (.Ltmp0+66)+2 ; encoding: [0bAAAAA010,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+66)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brmi (.Ltmp1+58)+2 ; encoding: [0bAAAAA010,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+58)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brmi .Ltmp0+66+2 ; encoding: [0bAAAAA010,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+66+2, kind: fixup_7_pcrel
|
||||
; CHECK: brmi .Ltmp1+58+2 ; encoding: [0bAAAAA010,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+58+2, kind: fixup_7_pcrel
|
||||
; CHECK: brmi bar ; encoding: [0bAAAAA010,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -12,12 +12,12 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brne (.Ltmp0+10)+2 ; encoding: [0bAAAAA001,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+10)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brne (.Ltmp1+2)+2 ; encoding: [0bAAAAA001,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+2)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brbc 1, (.Ltmp2+10)+2 ; encoding: [0bAAAAA001,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp2+10)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brne .Ltmp0+10+2 ; encoding: [0bAAAAA001,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+10+2, kind: fixup_7_pcrel
|
||||
; CHECK: brne .Ltmp1+2+2 ; encoding: [0bAAAAA001,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+2+2, kind: fixup_7_pcrel
|
||||
; CHECK: brbc 1, .Ltmp2+10+2 ; encoding: [0bAAAAA001,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp2+10+2, kind: fixup_7_pcrel
|
||||
; CHECK: brbc 1, bar ; encoding: [0bAAAAA001,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brpl (.Ltmp0-12)+2 ; encoding: [0bAAAAA010,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0-12)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brpl (.Ltmp1+18)+2 ; encoding: [0bAAAAA010,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+18)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brpl .Ltmp0-12+2 ; encoding: [0bAAAAA010,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0-12+2, kind: fixup_7_pcrel
|
||||
; CHECK: brpl .Ltmp1+18+2 ; encoding: [0bAAAAA010,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+18+2, kind: fixup_7_pcrel
|
||||
; CHECK: brpl bar ; encoding: [0bAAAAA010,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brsh (.Ltmp0+32)+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+32)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brsh (.Ltmp1+70)+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+70)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brsh .Ltmp0+32+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+32+2, kind: fixup_7_pcrel
|
||||
; CHECK: brsh .Ltmp1+70+2 ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+70+2, kind: fixup_7_pcrel
|
||||
; CHECK: brsh bar ; encoding: [0bAAAAA000,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brtc (.Ltmp0+52)+2 ; encoding: [0bAAAAA110,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+52)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brtc (.Ltmp1+50)+2 ; encoding: [0bAAAAA110,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+50)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brtc .Ltmp0+52+2 ; encoding: [0bAAAAA110,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+52+2, kind: fixup_7_pcrel
|
||||
; CHECK: brtc .Ltmp1+50+2 ; encoding: [0bAAAAA110,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+50+2, kind: fixup_7_pcrel
|
||||
; CHECK: brtc bar ; encoding: [0bAAAAA110,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brts (.Ltmp0+18)+2 ; encoding: [0bAAAAA110,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+18)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brts (.Ltmp1+22)+2 ; encoding: [0bAAAAA110,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+22)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brts .Ltmp0+18+2 ; encoding: [0bAAAAA110,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+18+2, kind: fixup_7_pcrel
|
||||
; CHECK: brts .Ltmp1+22+2 ; encoding: [0bAAAAA110,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+22+2, kind: fixup_7_pcrel
|
||||
; CHECK: brts bar ; encoding: [0bAAAAA110,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brvc (.Ltmp0-28)+2 ; encoding: [0bAAAAA011,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0-28)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvc (.Ltmp1-62)+2 ; encoding: [0bAAAAA011,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1-62)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvc .Ltmp0-28+2 ; encoding: [0bAAAAA011,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0-28+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvc .Ltmp1-62+2 ; encoding: [0bAAAAA011,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1-62+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvc bar ; encoding: [0bAAAAA011,0b111101AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,10 +11,10 @@ foo:
|
||||
|
||||
bar:
|
||||
|
||||
; CHECK: brvs (.Ltmp0+18)+2 ; encoding: [0bAAAAA011,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+18)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvs (.Ltmp1+32)+2 ; encoding: [0bAAAAA011,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1+32)+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvs .Ltmp0+18+2 ; encoding: [0bAAAAA011,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+18+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvs .Ltmp1+32+2 ; encoding: [0bAAAAA011,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1+32+2, kind: fixup_7_pcrel
|
||||
; CHECK: brvs bar ; encoding: [0bAAAAA011,0b111100AA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: bar, kind: fixup_7_pcrel
|
||||
|
||||
|
@ -11,14 +11,14 @@ foo:
|
||||
rcall .+46
|
||||
.short 0xdfea
|
||||
|
||||
; CHECK: rcall (.Ltmp0+0)+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+0)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rcall (.Ltmp1-8)+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1-8)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rcall (.Ltmp2+12)+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp2+12)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rcall (.Ltmp3+46)+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp3+46)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rcall .Ltmp0+0+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+0+2, kind: fixup_13_pcrel
|
||||
; CHECK: rcall .Ltmp1-8+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1-8+2, kind: fixup_13_pcrel
|
||||
; CHECK: rcall .Ltmp2+12+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp2+12+2, kind: fixup_13_pcrel
|
||||
; CHECK: rcall .Ltmp3+46+2 ; encoding: [A,0b1101AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp3+46+2, kind: fixup_13_pcrel
|
||||
|
||||
; INST-LABEL: <foo>:
|
||||
; INST-NEXT: 00 d0 rcall .+0
|
||||
|
@ -21,26 +21,26 @@ x:
|
||||
.short 0xc00f
|
||||
rjmp .+4094
|
||||
|
||||
; CHECK: rjmp (.Ltmp0+2)+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp0+2)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp (.Ltmp1-2)+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp1-2)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp .Ltmp0+2+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp0+2+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp .Ltmp1-2+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp1-2+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp foo ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: foo, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp (.Ltmp2+8)+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp2+8)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp .Ltmp2+8+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp2+8+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp end ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: end, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp (.Ltmp3+0)+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp3+0)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp (.Ltmp4-4)+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp4-4)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp (.Ltmp5-6)+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp5-6)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp .Ltmp3+0+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp3+0+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp .Ltmp4-4+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp4-4+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp .Ltmp5-6+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp5-6+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp x ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: x, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp (.Ltmp6+4094)+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: (.Ltmp6+4094)+2, kind: fixup_13_pcrel
|
||||
; CHECK: rjmp .Ltmp6+4094+2 ; encoding: [A,0b1100AAAA]
|
||||
; CHECK-NEXT: ; fixup A - offset: 0, value: .Ltmp6+4094+2, kind: fixup_13_pcrel
|
||||
|
||||
; INST-LABEL: <foo>:
|
||||
; INST-NEXT: 01 c0 rjmp .+2
|
||||
|
@ -72,7 +72,7 @@ TEST12:
|
||||
.fill TEST11 - TEST12, 4, 0x12345678
|
||||
|
||||
# CHECK: TEST13
|
||||
# CHECK: .fill (TEST11-TEST12)+i, 4, 0x12345678
|
||||
# CHECK: .fill TEST11-TEST12+i, 4, 0x12345678
|
||||
# OBJ-ERRS: [[@LINE+2]]:8: error: expected assembly-time absolute expression
|
||||
TEST13:
|
||||
.fill TEST11 - TEST12+i, 4, 0x12345678
|
||||
|
@ -10,5 +10,5 @@
|
||||
.long a + 4@GOTPCREL
|
||||
// CHECK: .long a@GOTPCREL+b@GOTPCREL
|
||||
.long (a + b)@GOTPCREL
|
||||
// CHECK: .long (10+b@GOTPCREL)+4
|
||||
// CHECK: .long 10+b@GOTPCREL+4
|
||||
.long 10 + b + 4@GOTPCREL
|
||||
|
@ -11,11 +11,11 @@
|
||||
|
||||
;;;; cross-section relative relocations
|
||||
|
||||
; CHECK: .quad (g3-t1)+4
|
||||
; CHECK: .quad g3-t1+4
|
||||
@t1 = global i64 add(i64 sub(i64 ptrtoint(ptr @g3 to i64), i64 ptrtoint(ptr @t1 to i64)), i64 4), section ".fix"
|
||||
; CHECK: .quad g3-t2
|
||||
@t2 = global i64 sub(i64 ptrtoint(ptr @g3 to i64), i64 ptrtoint(ptr @t2 to i64)), section ".fix"
|
||||
; CHECK: .quad (g3-t3)-4
|
||||
; CHECK: .quad g3-t3-4
|
||||
@t3 = global i64 sub(i64 sub(i64 ptrtoint(ptr @g3 to i64), i64 ptrtoint(ptr @t3 to i64)), i64 4), section ".fix"
|
||||
; CHECK: .long g3-t4
|
||||
@t4 = global i32 trunc(i64 sub(i64 ptrtoint(ptr @g3 to i64), i64 ptrtoint(ptr @t4 to i64)) to i32), section ".fix"
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
%struct.EEType = type { [2 x i8], i64, i32}
|
||||
|
||||
; CHECK: .long (g3-t7)-16
|
||||
; CHECK: .long g3-t7-16
|
||||
@t7 = global %struct.EEType {
|
||||
[2 x i8] c"\01\02",
|
||||
i64 256,
|
||||
|
@ -4,12 +4,12 @@
|
||||
# RUN: llvm-readobj -r %t | FileCheck %s
|
||||
|
||||
# ASM: .Ltmp0:
|
||||
# ASM-NEXT: .reloc (.Ltmp0+3)-2, R_X86_64_NONE, foo
|
||||
# ASM-NEXT: .reloc .Ltmp0+3-2, R_X86_64_NONE, foo
|
||||
# ASM-NEXT: .Ltmp1:
|
||||
# ASM-NEXT: .reloc .Ltmp1-1, R_X86_64_NONE, foo
|
||||
# ASM-NEXT: .Ltmp2:
|
||||
# ASM-NEXT: .reloc 2+.Ltmp2, R_X86_64_NONE, foo
|
||||
# ASM-NEXT: .reloc (1+foo)+3, R_X86_64_NONE, data+1
|
||||
# ASM-NEXT: .reloc 1+foo+3, R_X86_64_NONE, data+1
|
||||
# ASM-NEXT: .Ltmp3:
|
||||
# ASM-NEXT: .reloc .Ltmp3, BFD_RELOC_NONE, unused
|
||||
|
||||
|
@ -239,9 +239,9 @@
|
||||
|
||||
mov hi(l+4), %r7
|
||||
! CHECK: encoding: [0x03,0x81,A,A]
|
||||
! CHECK-NEXT: fixup A - offset: 0, value: (hi(l))+4, kind: FIXUP_LANAI_HI16{{$}}
|
||||
! CHECK-NEXT: fixup A - offset: 0, value: hi(l)+4, kind: FIXUP_LANAI_HI16{{$}}
|
||||
! CHECK-NEXT: <MCInst #{{[0-9]+}} ADD_I_HI
|
||||
! CHECK-NEXT: <MCOperand Reg:14>
|
||||
! CHECK-NEXT: <MCOperand Reg:7>
|
||||
! CHECK-NEXT: <MCOperand Expr:((hi(l))+4)>
|
||||
! CHECK-NEXT: <MCOperand Expr:(hi(l)+4)>
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
||||
; supported on x86-64 but not on ARM64
|
||||
|
||||
; CHECK: .long 5
|
||||
; CHECK-NEXT: .long ((l_extgotequiv-_table)-44)+24
|
||||
; CHECK-NEXT: .long l_extgotequiv-_table-44+24
|
||||
%struct.data { i32 4, %struct.anon { i32 5,
|
||||
i32 add (i32 trunc (i64 sub (i64 ptrtoint (ptr @extgotequiv to i64),
|
||||
i64 ptrtoint (ptr getelementptr inbounds ([4 x %struct.data], ptr @table, i32 0, i64 3, i32 1, i32 1) to i64))
|
||||
@ -67,7 +67,7 @@
|
||||
to i32)
|
||||
|
||||
; CHECK-LABEL: _deltaplus:
|
||||
; CHECK: .long (l_localgotequiv-_deltaplus)+55
|
||||
; CHECK: .long l_localgotequiv-_deltaplus+55
|
||||
@deltaplus = global i32 add (i32 trunc (i64 sub (i64 ptrtoint (ptr @localgotequiv to i64),
|
||||
i64 ptrtoint (ptr @deltaplus to i64))
|
||||
to i32), i32 55)
|
||||
|
@ -9,11 +9,11 @@
|
||||
# 32R2-EL: lw $4, %lo(foo)($4) # encoding: [A,A,0x84,0x8c]
|
||||
# 32R2-EL: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO16
|
||||
# 32R2-EL: lw $4, 56($4) # encoding: [0x38,0x00,0x84,0x8c]
|
||||
# 32R2-EL: lui $1, %hi(foo+(%lo(8))) # encoding: [A,A,0x01,0x3c]
|
||||
# 32R2-EL: # fixup A - offset: 0, value: %hi(foo+(%lo(8))), kind: fixup_Mips_HI16
|
||||
# 32R2-EL: lui $1, %hi(foo+%lo(8)) # encoding: [A,A,0x01,0x3c]
|
||||
# 32R2-EL: # fixup A - offset: 0, value: %hi(foo+%lo(8)), kind: fixup_Mips_HI16
|
||||
# 32R2-EL: addu $1, $1, $4 # encoding: [0x21,0x08,0x24,0x00]
|
||||
# 32R2-EL: lw $4, %lo(foo+(%lo(8)))($1) # encoding: [A,A,0x24,0x8c]
|
||||
# 32R2-EL: # fixup A - offset: 0, value: %lo(foo+(%lo(8))), kind: fixup_Mips_LO16
|
||||
# 32R2-EL: lw $4, %lo(foo+%lo(8))($1) # encoding: [A,A,0x24,0x8c]
|
||||
# 32R2-EL: # fixup A - offset: 0, value: %lo(foo+%lo(8)), kind: fixup_Mips_LO16
|
||||
# 32R2-EL: lw $4, %lo(12+foo)($4) # encoding: [A,A,0x84,0x8c]
|
||||
# 32R2-EL: # fixup A - offset: 0, value: %lo(12+foo), kind: fixup_Mips_LO16
|
||||
# 32R2-EL: lw $4, 10($4) # encoding: [0x0a,0x00,0x84,0x8c]
|
||||
@ -27,11 +27,11 @@
|
||||
# MM-32R2-EL: lw $4, %lo(foo)($4) # encoding: [0x84'A',0xfc'A',0x00,0x00]
|
||||
# MM-32R2-EL: # fixup A - offset: 0, value: %lo(foo), kind: fixup_MICROMIPS_LO16
|
||||
# MM-32R2-EL: lw $4, 56($4) # encoding: [0x84,0xfc,0x38,0x00]
|
||||
# MM-32R2-EL: lui $1, %hi(foo+(%lo(8))) # encoding: [0xa1'A',0x41'A',0x00,0x00]
|
||||
# MM-32R2-EL: # fixup A - offset: 0, value: %hi(foo+(%lo(8))), kind: fixup_MICROMIPS_HI16
|
||||
# MM-32R2-EL: lui $1, %hi(foo+%lo(8)) # encoding: [0xa1'A',0x41'A',0x00,0x00]
|
||||
# MM-32R2-EL: # fixup A - offset: 0, value: %hi(foo+%lo(8)), kind: fixup_MICROMIPS_HI16
|
||||
# MM-32R2-EL: addu $1, $1, $4 # encoding: [0x81,0x00,0x50,0x09]
|
||||
# MM-32R2-EL: lw $4, %lo(foo+(%lo(8)))($1) # encoding: [0x81'A',0xfc'A',0x00,0x00]
|
||||
# MM-32R2-EL: # fixup A - offset: 0, value: %lo(foo+(%lo(8))), kind: fixup_MICROMIPS_LO16
|
||||
# MM-32R2-EL: lw $4, %lo(foo+%lo(8))($1) # encoding: [0x81'A',0xfc'A',0x00,0x00]
|
||||
# MM-32R2-EL: # fixup A - offset: 0, value: %lo(foo+%lo(8)), kind: fixup_MICROMIPS_LO16
|
||||
# MM-32R2-EL: lw $4, %lo(12+foo)($4) # encoding: [0x84'A',0xfc'A',0x00,0x00]
|
||||
# MM-32R2-EL: # fixup A - offset: 0, value: %lo(12+foo), kind: fixup_MICROMIPS_LO16
|
||||
# MM-32R2-EL: lw $4, 10($4) # encoding: [0x84,0xfc,0x0a,0x00]
|
||||
|
@ -25,9 +25,9 @@ __start:
|
||||
lw $31, (8 * 4) % (8 * 31)($29) # CHECK: lw $ra, 32($sp) # encoding: [0x8f,0xbf,0x00,0x20]
|
||||
lw $31, (8 * 4) % (8)($29) # CHECK: lw $ra, 0($sp) # encoding: [0x8f,0xbf,0x00,0x00]
|
||||
lw $31, (8 * 4) + (8 * 31) ($29) # CHECK: lw $ra, 280($sp) # encoding: [0x8f,0xbf,0x01,0x18]
|
||||
lw $31, (8*4) + (8*31) + (8*32 + __start) ($29) # CHECK: lui $ra, %hi((248+((8*32)+__start))+32) # encoding: [0x3c,0x1f,A,A]
|
||||
# CHECK: # fixup A - offset: 0, value: %hi((248+((8*32)+__start))+32), kind: fixup_Mips_HI16
|
||||
lw $31, (8*4) + (8*31) + (8*32 + __start) ($29) # CHECK: lui $ra, %hi(248+((8*32)+__start)+32) # encoding: [0x3c,0x1f,A,A]
|
||||
# CHECK: # fixup A - offset: 0, value: %hi(248+((8*32)+__start)+32), kind: fixup_Mips_HI16
|
||||
# CHECK: addu $ra, $ra, $sp # encoding: [0x03,0xfd,0xf8,0x21]
|
||||
# CHECK: lw $ra, %lo((248+((8*32)+__start))+32)($ra) # encoding: [0x8f,0xff,A,A]
|
||||
# CHECK: # fixup A - offset: 0, value: %lo((248+((8*32)+__start))+32), kind: fixup_Mips_LO16
|
||||
# CHECK: lw $ra, %lo(248+((8*32)+__start)+32)($ra) # encoding: [0x8f,0xff,A,A]
|
||||
# CHECK: # fixup A - offset: 0, value: %lo(248+((8*32)+__start)+32), kind: fixup_Mips_LO16
|
||||
.end __start
|
||||
|
@ -16,7 +16,7 @@ bl __tls_get_addr(d@tlsld)@PLT+32768
|
||||
bl __tls_get_addr+32768(e@tlsld)@plt # gcc -fPIC
|
||||
|
||||
## These are not present in the wild, but just to test we can parse them.
|
||||
# ASM: bl __tls_get_addr(f@tlsld)@PLT+1+(-2)
|
||||
# ASM: bl __tls_get_addr(f@tlsld)@PLT+1+-2
|
||||
bl __tls_get_addr+1(f@tlsld)@PLT+-2
|
||||
# ASM: bl __tls_get_addr(g@tlsld)@PLT+1+(y-x)
|
||||
x:
|
||||
|
@ -220,7 +220,7 @@ sw a3, zero, a4
|
||||
|
||||
## Check that a complex expression can be simplified and matched.
|
||||
# CHECK: .Lpcrel_hi36:
|
||||
# CHECK: auipc a5, %pcrel_hi((255+a_symbol)-4)
|
||||
# CHECK: auipc a5, %pcrel_hi(255+a_symbol-4)
|
||||
# CHECK: addi a5, a5, %pcrel_lo(.Lpcrel_hi36)
|
||||
lla a5, (0xFF + a_symbol) - 4
|
||||
|
||||
|
@ -245,16 +245,16 @@
|
||||
axtra %f8, %f8, %f8, 8
|
||||
|
||||
#CHECK: brcth %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xcc,0x06,A,A,A,A]
|
||||
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
|
||||
#CHECK: fixup A - offset: 2, value: .[[LAB]]-4294967296+2, kind: FK_390_PC32DBL
|
||||
brcth %r0, -0x100000000
|
||||
#CHECK: brcth %r0, .[[LAB:L.*]]-2 # encoding: [0xcc,0x06,A,A,A,A]
|
||||
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
|
||||
#CHECK: fixup A - offset: 2, value: .[[LAB]]-2+2, kind: FK_390_PC32DBL
|
||||
brcth %r0, -2
|
||||
#CHECK: brcth %r0, .[[LAB:L.*]] # encoding: [0xcc,0x06,A,A,A,A]
|
||||
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
|
||||
brcth %r0, 0
|
||||
#CHECK: brcth %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xcc,0x06,A,A,A,A]
|
||||
#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
|
||||
#CHECK: fixup A - offset: 2, value: .[[LAB]]+4294967294+2, kind: FK_390_PC32DBL
|
||||
brcth %r0, 0xfffffffe
|
||||
|
||||
#CHECK: brcth %r0, foo # encoding: [0xcc,0x06,A,A,A,A]
|
||||
@ -266,9 +266,9 @@
|
||||
brcth %r15,foo
|
||||
|
||||
#CHECK: brcth %r3, bar+100 # encoding: [0xcc,0x36,A,A,A,A]
|
||||
# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
|
||||
# fixup A - offset: 2, value: bar+100+2, kind: FK_390_PC32DBL
|
||||
#CHECK: brcth %r4, bar+100 # encoding: [0xcc,0x46,A,A,A,A]
|
||||
# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
|
||||
# fixup A - offset: 2, value: bar+100+2, kind: FK_390_PC32DBL
|
||||
|
||||
brcth %r3,bar+100
|
||||
brcth %r4,bar+100
|
||||
|
@ -3,16 +3,16 @@
|
||||
# RUN: llvm-mc -triple s390x-linux-gnu -mcpu=arch10 -show-encoding %s | FileCheck %s
|
||||
|
||||
#CHECK: bpp 0, .[[LAB:L.*]]-65536, 0 # encoding: [0xc7,0x00,0x00,0x00,A,A]
|
||||
#CHECK: fixup A - offset: 4, value: (.[[LAB]]-65536)+4, kind: FK_390_PC16DBL
|
||||
#CHECK: fixup A - offset: 4, value: .[[LAB]]-65536+4, kind: FK_390_PC16DBL
|
||||
bpp 0, -0x10000, 0
|
||||
#CHECK: bpp 0, .[[LAB:L.*]]-2, 0 # encoding: [0xc7,0x00,0x00,0x00,A,A]
|
||||
#CHECK: fixup A - offset: 4, value: (.[[LAB]]-2)+4, kind: FK_390_PC16DBL
|
||||
#CHECK: fixup A - offset: 4, value: .[[LAB]]-2+4, kind: FK_390_PC16DBL
|
||||
bpp 0, -2, 0
|
||||
#CHECK: bpp 0, .[[LAB:L.*]], 0 # encoding: [0xc7,0x00,0x00,0x00,A,A]
|
||||
#CHECK: fixup A - offset: 4, value: .[[LAB]]+4, kind: FK_390_PC16DBL
|
||||
bpp 0, 0, 0
|
||||
#CHECK: bpp 0, .[[LAB:L.*]]+65534, 0 # encoding: [0xc7,0x00,0x00,0x00,A,A]
|
||||
#CHECK: fixup A - offset: 4, value: (.[[LAB]]+65534)+4, kind: FK_390_PC16DBL
|
||||
#CHECK: fixup A - offset: 4, value: .[[LAB]]+65534+4, kind: FK_390_PC16DBL
|
||||
bpp 0, 0xfffe, 0
|
||||
|
||||
#CHECK: bpp 0, foo, 4095(%r3) # encoding: [0xc7,0x00,0x3f,0xff,A,A]
|
||||
@ -24,9 +24,9 @@
|
||||
bpp 15, foo, 1(%r11)
|
||||
|
||||
#CHECK: bpp 3, bar+100, 4095 # encoding: [0xc7,0x30,0x0f,0xff,A,A]
|
||||
#CHECK: fixup A - offset: 4, value: (bar+100)+4, kind: FK_390_PC16DBL
|
||||
#CHECK: fixup A - offset: 4, value: bar+100+4, kind: FK_390_PC16DBL
|
||||
#CHECK: bpp 4, bar+100, 1 # encoding: [0xc7,0x40,0x00,0x01,A,A]
|
||||
#CHECK: fixup A - offset: 4, value: (bar+100)+4, kind: FK_390_PC16DBL
|
||||
#CHECK: fixup A - offset: 4, value: bar+100+4, kind: FK_390_PC16DBL
|
||||
|
||||
bpp 3, bar+100, 4095
|
||||
bpp 4, bar+100, 1
|
||||
@ -40,11 +40,11 @@
|
||||
bpp 8, frob@PLT, 0
|
||||
|
||||
#CHECK: bprp 0, .[[LABA:L.*]]-4096, .[[LABB:L.*]] # encoding: [0xc5,0b0000AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: (.[[LABA]]-4096)+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup A - offset: 1, value: .[[LABA]]-4096+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: .[[LABB]]+3, kind: FK_390_PC24DBL
|
||||
bprp 0, -0x1000, 0
|
||||
#CHECK: bprp 0, .[[LABA:L.*]]-2, .[[LABB:L.*]] # encoding: [0xc5,0b0000AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: (.[[LABA]]-2)+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup A - offset: 1, value: .[[LABA]]-2+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: .[[LABB]]+3, kind: FK_390_PC24DBL
|
||||
bprp 0, -2, 0
|
||||
#CHECK: bprp 0, .[[LABA:L.*]], .[[LABB:L.*]] # encoding: [0xc5,0b0000AAAA,A,B,B,B]
|
||||
@ -52,16 +52,16 @@
|
||||
#CHECK: fixup B - offset: 3, value: .[[LABB]]+3, kind: FK_390_PC24DBL
|
||||
bprp 0, 0, 0
|
||||
#CHECK: bprp 0, .[[LABA:L.*]]+4094, .[[LABB:L.*]] # encoding: [0xc5,0b0000AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: (.[[LABA]]+4094)+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup A - offset: 1, value: .[[LABA]]+4094+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: .[[LABB]]+3, kind: FK_390_PC24DBL
|
||||
bprp 0, 0xffe, 0
|
||||
#CHECK: bprp 15, .[[LABA:L.*]], .[[LABB:L.*]]-16777216 # encoding: [0xc5,0b1111AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: .[[LABA]]+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: (.[[LABB]]-16777216)+3, kind: FK_390_PC24DBL
|
||||
#CHECK: fixup B - offset: 3, value: .[[LABB]]-16777216+3, kind: FK_390_PC24DBL
|
||||
bprp 15, 0, -0x1000000
|
||||
#CHECK: bprp 15, .[[LABA:L.*]], .[[LABB:L.*]]-2 # encoding: [0xc5,0b1111AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: .[[LABA]]+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: (.[[LABB]]-2)+3, kind: FK_390_PC24DBL
|
||||
#CHECK: fixup B - offset: 3, value: .[[LABB]]-2+3, kind: FK_390_PC24DBL
|
||||
bprp 15, 0, -2
|
||||
#CHECK: bprp 15, .[[LABA:L.*]], .[[LABB:L.*]] # encoding: [0xc5,0b1111AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: .[[LABA]]+1, kind: FK_390_PC12DBL
|
||||
@ -69,7 +69,7 @@
|
||||
bprp 15, 0, 0
|
||||
#CHECK: bprp 15, .[[LABA:L.*]], .[[LABB:L.*]]+16777214 # encoding: [0xc5,0b1111AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: .[[LABA]]+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: (.[[LABB]]+16777214)+3, kind: FK_390_PC24DBL
|
||||
#CHECK: fixup B - offset: 3, value: .[[LABB]]+16777214+3, kind: FK_390_PC24DBL
|
||||
bprp 15, 0, 0xfffffe
|
||||
|
||||
#CHECK: bprp 1, branch, target # encoding: [0xc5,0b0001AAAA,A,B,B,B]
|
||||
@ -87,14 +87,14 @@
|
||||
bprp 3, branch, target
|
||||
|
||||
#CHECK: bprp 4, branch+100, target # encoding: [0xc5,0b0100AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: (branch+100)+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup A - offset: 1, value: branch+100+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: target+3, kind: FK_390_PC24DBL
|
||||
#CHECK: bprp 5, branch, target+100 # encoding: [0xc5,0b0101AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: branch+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: (target+100)+3, kind: FK_390_PC24DBL
|
||||
#CHECK: fixup B - offset: 3, value: target+100+3, kind: FK_390_PC24DBL
|
||||
#CHECK: bprp 6, branch+100, target+100 # encoding: [0xc5,0b0110AAAA,A,B,B,B]
|
||||
#CHECK: fixup A - offset: 1, value: (branch+100)+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: (target+100)+3, kind: FK_390_PC24DBL
|
||||
#CHECK: fixup A - offset: 1, value: branch+100+1, kind: FK_390_PC12DBL
|
||||
#CHECK: fixup B - offset: 3, value: target+100+3, kind: FK_390_PC24DBL
|
||||
|
||||
bprp 4, branch+100, target
|
||||
bprp 5, branch, target+100
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,8 @@
|
||||
// RUN: llvm-objdump -d -m --no-show-raw-insn --full-leading-addr --print-imm-hex %p/Inputs/hello.obj.macho-arm | FileCheck %s --check-prefix=OBJ
|
||||
// RUN: llvm-objdump -d -m --no-show-raw-insn --full-leading-addr --print-imm-hex %p/Inputs/hello.exe.macho-arm | FileCheck %s --check-prefix=EXE
|
||||
|
||||
OBJ: 00000006 40 f2 24 03 movw r3, :lower16:((54-14)-4)
|
||||
OBJ: 0000000a c0 f2 00 03 movt r3, :upper16:((54-14)-4)
|
||||
OBJ: 00000006 40 f2 24 03 movw r3, :lower16:(54-14-4)
|
||||
OBJ: 0000000a c0 f2 00 03 movt r3, :upper16:(54-14-4)
|
||||
OBJ: 00000024 ff f7 ec ff bl _printf
|
||||
|
||||
EXE: 0000bfa8 00 f0 28 e8 blx 0xbffc @ symbol stub for: _printf
|
||||
|
@ -11,5 +11,5 @@ PCinst:
|
||||
.section __TEXT,__cstring,cstring_literals
|
||||
Str:
|
||||
.asciz "Hello world\n"
|
||||
# CHECK: movw r3, :lower16:((Str-PCinst)-4)
|
||||
# CHECK: movt r3, :upper16:((Str-PCinst)-4)
|
||||
# CHECK: movw r3, :lower16:(Str-PCinst-4)
|
||||
# CHECK: movt r3, :upper16:(Str-PCinst-4)
|
||||
|
Loading…
x
Reference in New Issue
Block a user