; RUN: llc -mtriple=hexagon -hexagon-small-data-threshold=8 < %s | FileCheck %s ; RUN: llc -mtriple=hexagon -hexagon-small-data-threshold=0 < %s \ ; RUN: | FileCheck --check-prefix=NOSDATA %s ; Test coverage for HexagonTargetObjectFile: exercise the small data/BSS ; section selection logic. @small_global = global i32 0, align 4 @large_global = global [256 x i32] zeroinitializer, align 4 @small_init = global i32 7, align 4 ; With small data threshold=8, small globals go into .sdata/.sbss. ; CHECK-LABEL: test_small_data: ; CHECK: memw(gp+#small_global) ; NOSDATA-LABEL: test_small_data: ; NOSDATA: memw(##small_global) define i32 @test_small_data() { entry: %val = load i32, ptr @small_global, align 4 ret i32 %val } ; Large arrays should NOT go into small data. ; CHECK-LABEL: test_large_data: ; CHECK: ##large_global define i32 @test_large_data() { entry: %val = load i32, ptr @large_global, align 4 ret i32 %val } ; Initialized small data should also be accessible via GP. ; CHECK-LABEL: test_init: ; CHECK: memw(gp+#small_init) define i32 @test_init() { entry: %val = load i32, ptr @small_init, align 4 ret i32 %val }