Japt, 5 bytes
Outputs a 2D-array.
õ@õwX õ@õwX :Implicit input of integer U õ :Range [1,U] @ :Map each X õ : Range [1,U] wX : Max of each with X Or, if outputting a 1D-array is allowed:
Japt, 4 bytes
õ ïw õ ïw :Implicit input of integer U õ :Range [1,U] ï :Cartesian product with itself w :Reduce each pair by Max Or, if it turns out the output format is strict:
Japt -R, 7 bytes
ÆõwXÄ ¸